Ensure we iterate all private allocations in range

This commit is contained in:
Gabriel A 2024-02-24 21:44:58 -03:00
commit 63fc0dc57e

View file

@ -762,13 +762,15 @@ namespace Ryujinx.Cpu.Jit
public bool HasPrivateAllocation(ulong va, ulong size, ulong startVa, ulong startSize, ref PrivateRange range)
{
ulong endVa = va + size;
_treeLock.EnterReadLock();
try
{
PrivateMapping map = _privateTree.GetNode(va);
if (map != null && map.PrivateAllocation.IsValid)
for (PrivateMapping map = _privateTree.GetNode(va); map != null && map.Address < endVa; map = map.Successor)
{
if (map.PrivateAllocation.IsValid)
{
if (map.Address <= startVa && map.EndAddress >= startVa + startSize)
{
@ -783,6 +785,7 @@ namespace Ryujinx.Cpu.Jit
return true;
}
}
}
finally
{
_treeLock.ExitReadLock();