diff --git a/src/common/heap_tracker.cpp b/src/common/heap_tracker.cpp index 758338286d..a99d386d8a 100644 --- a/src/common/heap_tracker.cpp +++ b/src/common/heap_tracker.cpp @@ -46,13 +46,14 @@ 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}; - 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; + auto* const map = new SeparateHeapMap{ + .vaddr = virtual_offset, + .paddr = host_offset, + .size = length, + .tick = m_tick++, + .perm = perm, + .is_resident = false, + }; // Insert into mappings. m_map_count++; @@ -249,13 +250,15 @@ void HeapTracker::SplitHeapMapLocked(VAddr offset) { const size_t left_size = offset - left->vaddr; left->size = left_size; - 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; + // 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, + }; // Insert the new right map. m_map_count++;