diff --git a/src/core/cpu_code_cache.cpp b/src/core/cpu_code_cache.cpp index caa1df271..d5eac4954 100644 --- a/src/core/cpu_code_cache.cpp +++ b/src/core/cpu_code_cache.cpp @@ -442,6 +442,7 @@ CPU::CodeCache::Block* CPU::CodeCache::CreateBlock(u32 pc, const BlockInstructio Assert(it != s_blocks.end()); s_blocks.erase(it); + block->~Block(); std::free(block); block = nullptr; } @@ -452,6 +453,7 @@ CPU::CodeCache::Block* CPU::CodeCache::CreateBlock(u32 pc, const BlockInstructio block = static_cast(std::malloc(sizeof(Block) + (sizeof(Instruction) * size) + (sizeof(InstructionInfo) * size))); Assert(block); + new (block) Block(); s_blocks.push_back(block); } @@ -710,7 +712,10 @@ void CPU::CodeCache::ClearBlocks() #endif for (Block* block : s_blocks) + { + block->~Block(); std::free(block); + } s_blocks.clear(); std::memset(s_lut_block_pointers.get(), 0, sizeof(Block*) * GetLUTSlotCount(false));