82 lines
3.5 KiB
Diff
82 lines
3.5 KiB
Diff
# UNDF: UNDF-2026-000000900
|
|
--- a/src/lagrangian/molecularDynamics/moleculeCloud/moleculeCloud.C
|
|
+++ b/src/lagrangian/molecularDynamics/moleculeCloud/moleculeCloud.C
|
|
@@ -274,7 +274,9 @@
|
|
|
|
{
|
|
- DynamicList<molecule*> molsToDelete;
|
|
+ // CWE-407: molsToDelete was a DynamicList scanned by findIndex() O(N)
|
|
+ // for each molecule pair, yielding O(pairs * D) where D = deletions.
|
|
+ // Fix: use HashSet<molecule*> for O(1) membership checks.
|
|
+ HashSet<molecule*> molsToDeleteSet;
|
|
|
|
const labelListList& dil(il_.dil());
|
|
|
|
@@ -304,13 +306,13 @@
|
|
|| findIndex(pot_.removalOrder(), idJ)
|
|
< findIndex(pot_.removalOrder(), idI)
|
|
)
|
|
{
|
|
- if (findIndex(molsToDelete, molJ) == -1)
|
|
+ if (!molsToDeleteSet.found(molJ))
|
|
{
|
|
- molsToDelete.append(molJ);
|
|
+ molsToDeleteSet.insert(molJ);
|
|
}
|
|
}
|
|
- else if (findIndex(molsToDelete, molI) == -1)
|
|
+ else if (!molsToDeleteSet.found(molI))
|
|
{
|
|
- molsToDelete.append(molI);
|
|
+ molsToDeleteSet.insert(molI);
|
|
}
|
|
}
|
|
@@ -336,13 +338,13 @@
|
|
|| findIndex(pot_.removalOrder(), idJ)
|
|
< findIndex(pot_.removalOrder(), idI)
|
|
)
|
|
{
|
|
- if (findIndex(molsToDelete, molJ) == -1)
|
|
+ if (!molsToDeleteSet.found(molJ))
|
|
{
|
|
- molsToDelete.append(molJ);
|
|
+ molsToDeleteSet.insert(molJ);
|
|
}
|
|
}
|
|
- else if (findIndex(molsToDelete, molI) == -1)
|
|
+ else if (!molsToDeleteSet.found(molI))
|
|
{
|
|
- molsToDelete.append(molI);
|
|
+ molsToDeleteSet.insert(molI);
|
|
}
|
|
}
|
|
@@ -353,10 +355,10 @@
|
|
|
|
- forAll(molsToDelete, mTD)
|
|
+ forAllConstIter(HashSet<molecule*>, molsToDeleteSet, iter)
|
|
{
|
|
- deleteParticle(*(molsToDelete[mTD]));
|
|
+ deleteParticle(*iter.key());
|
|
}
|
|
}
|
|
|
|
@@ -419,9 +421,9 @@
|
|
{
|
|
- if (findIndex(molsToDelete, molI) == -1)
|
|
+ if (!molsToDeleteSet.found(molI))
|
|
{
|
|
- molsToDelete.append(molI);
|
|
+ molsToDeleteSet.insert(molI);
|
|
}
|
|
}
|
|
else if
|
|
@@ -437,9 +439,9 @@
|
|
if (molI->origId() > molJ->origId())
|
|
{
|
|
- if (findIndex(molsToDelete, molI) == -1)
|
|
+ if (!molsToDeleteSet.found(molI))
|
|
{
|
|
- molsToDelete.append(molI);
|
|
+ molsToDeleteSet.insert(molI);
|
|
}
|
|
}
|