summaryrefslogtreecommitdiff
path: root/view/sharedcache/core/SharedCache.cpp
diff options
context:
space:
mode:
authorMark Rowe <mrowe@bdash.net.nz>2024-11-15 00:13:15 -0800
committerkat <kat@vector35.com>2024-12-10 10:39:14 -0500
commit90af5bdc87977c4c39ed7594f882dfad41756fb5 (patch)
tree56bd3c28ed7924d6a8b922b85830a2797c83feb3 /view/sharedcache/core/SharedCache.cpp
parentc70afdbe472b80151cbe65395b95283848ade62e (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.cpp20
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