diff --git a/Userland/DevTools/UserspaceEmulator/MallocTracer.cpp b/Userland/DevTools/UserspaceEmulator/MallocTracer.cpp index de663ea6a0..3016527d3d 100644 --- a/Userland/DevTools/UserspaceEmulator/MallocTracer.cpp +++ b/Userland/DevTools/UserspaceEmulator/MallocTracer.cpp @@ -80,11 +80,15 @@ void MallocTracer::target_did_malloc(Badge, FlatPtr address, size_t si } if (!mmap_region.is_malloc_block()) { - auto new_malloc_data = make(); - mmap_region.set_malloc_metadata({}, move(new_malloc_data)); + auto chunk_size = mmap_region.read32(offsetof(CommonHeader, m_size)).value(); + mmap_region.set_malloc_metadata({}, + adopt_own(*new MallocRegionMetadata { + .region = mmap_region, + .address = mmap_region.base(), + .chunk_size = chunk_size, + .mallocations = {}, + })); auto& malloc_data = *mmap_region.malloc_metadata(); - malloc_data.address = region->base(); - malloc_data.chunk_size = mmap_region.read32(offsetof(CommonHeader, m_size)).value(); bool is_chunked_block = malloc_data.chunk_size <= size_classes[num_size_classes - 1]; if (is_chunked_block) diff --git a/Userland/DevTools/UserspaceEmulator/MallocTracer.h b/Userland/DevTools/UserspaceEmulator/MallocTracer.h index 90585e523c..6329e66da9 100644 --- a/Userland/DevTools/UserspaceEmulator/MallocTracer.h +++ b/Userland/DevTools/UserspaceEmulator/MallocTracer.h @@ -56,6 +56,7 @@ struct Mallocation { class MallocRegionMetadata { public: + MmapRegion& region; FlatPtr address { 0 }; size_t chunk_size { 0 };