From 90af5bdc87977c4c39ed7594f882dfad41756fb5 Mon Sep 17 00:00:00 2001 From: Mark Rowe Date: Fri, 15 Nov 2024 00:13:15 -0800 Subject: [SharedCache] Preserve flags when splitting a memory region The flags field was being left uninitialized which could result in the region being mishandled during later analysis. --- view/sharedcache/core/SharedCache.cpp | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'view/sharedcache/core/SharedCache.cpp') diff --git a/view/sharedcache/core/SharedCache.cpp b/view/sharedcache/core/SharedCache.cpp index 65236598..c1ff902e 100644 --- a/view/sharedcache/core/SharedCache.cpp +++ b/view/sharedcache/core/SharedCache.cpp @@ -846,21 +846,19 @@ void SharedCache::PerformInitialLoad() // Part before the overlap if (regionStart < segmentStart) { - MemoryRegion newRegion; + MemoryRegion newRegion(*it); newRegion.start = regionStart; newRegion.size = segmentStart - regionStart; - newRegion.prettyName = it->prettyName; - newRegions.push_back(newRegion); + newRegions.push_back(std::move(newRegion)); } // Part after the overlap if (regionEnd > segmentEnd) { - MemoryRegion newRegion; + MemoryRegion newRegion(*it); newRegion.start = segmentEnd; newRegion.size = regionEnd - segmentEnd; - newRegion.prettyName = it->prettyName; - newRegions.push_back(newRegion); + newRegions.push_back(std::move(newRegion)); } // Erase the original region @@ -909,21 +907,19 @@ void SharedCache::PerformInitialLoad() // Part before the overlap if (regionStart < segmentStart) { - MemoryRegion newRegion; + MemoryRegion newRegion(*it); newRegion.start = regionStart; newRegion.size = segmentStart - regionStart; - newRegion.prettyName = it->prettyName; - newRegions.push_back(newRegion); + newRegions.push_back(std::move(newRegion)); } // Part after the overlap if (regionEnd > segmentEnd) { - MemoryRegion newRegion; + MemoryRegion newRegion(*it); newRegion.start = segmentEnd; newRegion.size = regionEnd - segmentEnd; - newRegion.prettyName = it->prettyName; - newRegions.push_back(newRegion); + newRegions.push_back(std::move(newRegion)); } // Erase the original region -- cgit v1.3.1