diff --git a/source/mijin/memory/stack_allocator.hpp b/source/mijin/memory/stack_allocator.hpp index c92bd2f..745e01a 100644 --- a/source/mijin/memory/stack_allocator.hpp +++ b/source/mijin/memory/stack_allocator.hpp @@ -326,6 +326,7 @@ public: // couldn't allocate the snapshot return {}; } + ::new (snapshotData) StackAllocatorSnapshotData; StackAllocatorSnapshot snapshot; snapshot.data = snapshotData; if (firstChunk_ != prevFirst) @@ -442,6 +443,7 @@ public: Chunk* snapshotChunk = findChunk(snapshot.data); MIJIN_ASSERT_FATAL(snapshotChunk != nullptr, "Snapshot not in chunks?"); snapshotChunk->allocated -= calcSnapshotSize(snapshot->numChunks); // note: this might miss the alignment bytes of the snapshot, but that should be fine + snapshot.data->~StackAllocatorSnapshotData(); } private: void initAndAddChunk(Chunk* newChunk) noexcept