From f18020ebad804f32fd35dd68c655b8bcacf67ea4 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 8 Feb 2026 14:51:11 +0100 Subject: [PATCH] Core/Vmaps: Fix mismatched new and delete operators in BIH::build --- src/common/Collision/BoundingIntervalHierarchy.h | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/common/Collision/BoundingIntervalHierarchy.h b/src/common/Collision/BoundingIntervalHierarchy.h index 5674ee2057..3d12b92dab 100644 --- a/src/common/Collision/BoundingIntervalHierarchy.h +++ b/src/common/Collision/BoundingIntervalHierarchy.h @@ -23,7 +23,6 @@ #include #include #include -#include #include #define MAX_STACK_SIZE 64 @@ -62,13 +61,13 @@ class TC_COMMON_API BIH return; } + objects.resize(primitives.size()); + buildData dat; dat.maxPrims = leafSize; dat.numPrims = uint32(primitives.size()); - dat.indices = new uint32[dat.numPrims]; + dat.indices = objects.data(); dat.primBound = static_cast(::operator new[](dat.numPrims * sizeof(G3D::AABox))); - std::uninitialized_fill_n(dat.primBound, dat.numPrims, G3D::AABox::empty()); - getBounds(primitives[0], bounds); for (uint32 i = 0; i < dat.numPrims; ++i) { dat.indices[i] = i; @@ -81,11 +80,8 @@ class TC_COMMON_API BIH if (printStats) stats.printStats(); - objects.resize(dat.numPrims); - std::ranges::copy_n(dat.indices, dat.numPrims, objects.begin()); tree = tempTree; // copy instead of move to allocate exactly tempTree.size() elements and avoid shrink_to_fit - delete[] dat.primBound; - delete[] dat.indices; + ::operator delete[](dat.primBound); } uint32 primCount() const { return uint32(objects.size()); } G3D::AABox const& bound() const { return bounds; }