# 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` or `HashMap`: | Hot Path | Container | O() | |----------|-----------|-----| | `Renderer::DrawDebugGeometry` processedGeometries/processedLights | `HashSet` / `HashSet` | O(1) | | `AnimationController::Update` processedAnimations | `HashSet` | O(1) | | `PhysicsWorld` currentCollisions / previousCollisions | `HashMap, ManifoldPair>` | O(1) | | `Scene` node/component registries | `HashMap` | O(1) | `PODVector::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>` — O(1) tag lookup. No qualifying O(N²) defects found in any hot path. **Verdict: CLEAN**