cpython-0001: unittest.mock.reset_mock visited=[] O(N²) diamond traversal mastodon-0001: OStatus Creation processed_account_ids Array#include? O(N²) mastodon-0002: ActivityPub process_hashtag status.tags.include? O(N²) AR queries CLEAN: dask, bottle, pyramid, alembic, dgl, synapse, dendrite, zulip
1.2 KiB
1.2 KiB
dry (Urho3D fork) — CWE-407 Scan Result: CLEAN
Scanned: 2026-03-29 Repo: https://github.com/nikibobi/dry (Urho3D fork)
Findings
All hot-path dedup structures in dry use HashSet<T> or HashMap<K,V>:
| Hot Path | Container | O() |
|---|---|---|
Renderer::DrawDebugGeometry processedGeometries/processedLights |
HashSet<Drawable*> / HashSet<Light*> |
O(1) |
AnimationController::Update processedAnimations |
HashSet<StringHash> |
O(1) |
PhysicsWorld currentCollisions / previousCollisions |
HashMap<Pair<...>, ManifoldPair> |
O(1) |
Scene node/component registries |
HashMap<unsigned, Node*> |
O(1) |
PODVector<RigidBody*>::Contains in PhysicsQueryCallback::addSingleResult
is O(R) per contact point, but R is bounded by the number of bodies in the
query volume (typically < 10 in practice) and the method is not called
per-frame unless the game explicitly issues repeated overlap queries.
Node tag lookup HasTag() uses StringVector::Contains (O(T)), but T (tags
per node) is typically 1-3. Scene-level GetNodesWithTag() is backed by
HashMap<StringHash, PODVector<Node*>> — O(1) tag lookup.
No qualifying O(N²) defects found in any hot path.
Verdict: CLEAN