From 24d0ec61e62b8da3c3ddcb2eb6f854e19da307cd Mon Sep 17 00:00:00 2001 From: Shinmegumi Date: Wed, 8 Oct 2025 19:34:05 +0200 Subject: [PATCH] [common] Heap Tracker Pulled from PR 398 originally authored by Gamer64 and pulled from commit by Jarrod Norwell. Changes the heap tracker so things get destroyed so they aren't continually allocated without being removed. --- src/common/heap_tracker.cpp | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/src/common/heap_tracker.cpp b/src/common/heap_tracker.cpp index a99d386d8a..2f07efeaab 100644 --- a/src/common/heap_tracker.cpp +++ b/src/common/heap_tracker.cpp @@ -46,14 +46,13 @@ void HeapTracker::Map(size_t virtual_offset, size_t host_offset, size_t length, // We are mapping part of a separate heap. std::scoped_lock lk{m_lock}; - auto* const map = new SeparateHeapMap{ - .vaddr = virtual_offset, - .paddr = host_offset, - .size = length, - .tick = m_tick++, - .perm = perm, - .is_resident = false, - }; + std::unique_ptr map; + map->vaddr = virtual_offset; + map->paddr = host_offset; + map->size = length; + map->tick = m_tick++; + map->perm = perm; + map->is_resident = false; // Insert into mappings. m_map_count++; @@ -251,14 +250,13 @@ void HeapTracker::SplitHeapMapLocked(VAddr offset) { left->size = left_size; // Create the new right map. - auto* const right = new SeparateHeapMap{ - .vaddr = left->vaddr + left_size, - .paddr = left->paddr + left_size, - .size = orig_size - left_size, - .tick = left->tick, - .perm = left->perm, - .is_resident = left->is_resident, - }; + std::unique_ptr right; + right->vaddr = left->vaddr + left_size; + right->paddr = left->paddr + left_size; + right->size = orig_size - left_size; + right->tick = left->tick; + right->perm = left->perm; + right->is_resident = left->is_resident; // Insert the new right map. m_map_count++;