diff options
| author | Mark Rowe <mrowe@bdash.net.nz> | 2024-11-15 00:13:15 -0800 |
|---|---|---|
| committer | kat <kat@vector35.com> | 2024-12-10 10:39:14 -0500 |
| commit | 90af5bdc87977c4c39ed7594f882dfad41756fb5 (patch) | |
| tree | 56bd3c28ed7924d6a8b922b85830a2797c83feb3 /view/sharedcache/core/SharedCache.cpp | |
| parent | c70afdbe472b80151cbe65395b95283848ade62e (diff) | |
[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.
Diffstat (limited to 'view/sharedcache/core/SharedCache.cpp')
| -rw-r--r-- | view/sharedcache/core/SharedCache.cpp | 20 |
1 files changed, 8 insertions, 12 deletions
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 |
