aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Ryujinx.Memory/WindowsShared/PlaceholderManager.cs28
1 files changed, 12 insertions, 16 deletions
diff --git a/Ryujinx.Memory/WindowsShared/PlaceholderManager.cs b/Ryujinx.Memory/WindowsShared/PlaceholderManager.cs
index f1752229..b08a91e0 100644
--- a/Ryujinx.Memory/WindowsShared/PlaceholderManager.cs
+++ b/Ryujinx.Memory/WindowsShared/PlaceholderManager.cs
@@ -293,18 +293,14 @@ namespace Ryujinx.Memory.WindowsShared
if (IsMapped(overlap.Value))
{
- ulong overlapStart = overlap.Start;
- ulong overlapEnd = overlap.End;
- ulong overlapValue = overlap.Value;
-
lock (_mappings)
{
_mappings.Remove(overlap);
- _mappings.Add(new RangeNode<ulong>(overlapStart, overlapEnd, ulong.MaxValue));
+ _mappings.Add(new RangeNode<ulong>(overlap.Start, overlap.End, ulong.MaxValue));
}
- bool overlapStartsBefore = overlapStart < startAddress;
- bool overlapEndsAfter = overlapEnd > endAddress;
+ bool overlapStartsBefore = overlap.Start < startAddress;
+ bool overlapEndsAfter = overlap.End > endAddress;
if (overlapStartsBefore || overlapEndsAfter)
{
@@ -321,25 +317,25 @@ namespace Ryujinx.Memory.WindowsShared
{
partialUnmapState.PartialUnmapsCount++;
- if (!WindowsApi.UnmapViewOfFile2(WindowsApi.CurrentProcessHandle, (IntPtr)overlapStart, 2))
+ if (!WindowsApi.UnmapViewOfFile2(WindowsApi.CurrentProcessHandle, (IntPtr)overlap.Start, 2))
{
throw new WindowsApiException("UnmapViewOfFile2");
}
if (overlapStartsBefore)
{
- ulong remapSize = startAddress - overlapStart;
+ ulong remapSize = startAddress - overlap.Start;
- MapViewInternal(sharedMemory, overlapValue, (IntPtr)overlapStart, (IntPtr)remapSize);
- RestoreRangeProtection(overlapStart, remapSize);
+ MapViewInternal(sharedMemory, overlap.Value, (IntPtr)overlap.Start, (IntPtr)remapSize);
+ RestoreRangeProtection(overlap.Start, remapSize);
}
if (overlapEndsAfter)
{
- ulong overlappedSize = endAddress - overlapStart;
- ulong remapBackingOffset = overlapValue + overlappedSize;
- ulong remapAddress = overlapStart + overlappedSize;
- ulong remapSize = overlapEnd - endAddress;
+ ulong overlappedSize = endAddress - overlap.Start;
+ ulong remapBackingOffset = overlap.Value + overlappedSize;
+ ulong remapAddress = overlap.Start + overlappedSize;
+ ulong remapSize = overlap.End - endAddress;
MapViewInternal(sharedMemory, remapBackingOffset, (IntPtr)remapAddress, (IntPtr)remapSize);
RestoreRangeProtection(remapAddress, remapSize);
@@ -350,7 +346,7 @@ namespace Ryujinx.Memory.WindowsShared
partialUnmapLock.DowngradeFromWriterLock();
}
}
- else if (!WindowsApi.UnmapViewOfFile2(WindowsApi.CurrentProcessHandle, (IntPtr)overlapStart, 2))
+ else if (!WindowsApi.UnmapViewOfFile2(WindowsApi.CurrentProcessHandle, (IntPtr)overlap.Start, 2))
{
throw new WindowsApiException("UnmapViewOfFile2");
}