Explorar o código

Perform bounds checking before list indexer to avoid frequent exceptions (#4438)

* Perform bounds checking before list indexer to avoid frequent ArgumentOutOfRangeExceptions

* do a single compare after casting id and .Count to uint
jhorv %!s(int64=3) %!d(string=hai) anos
pai
achega
58207685c0
Modificáronse 1 ficheiros con 10 adicións e 2 borrados
  1. 10 2
      Ryujinx.Graphics.Vulkan/IdList.cs

+ 10 - 2
Ryujinx.Graphics.Vulkan/IdList.cs

@@ -80,8 +80,16 @@ namespace Ryujinx.Graphics.Vulkan
 
             try
             {
-                value = _list[id];
-                return value != null;
+                if ((uint)id < (uint)_list.Count)
+                {
+                    value = _list[id];
+                    return value != null;
+                }
+                else
+                {
+                    value = null;
+                    return false;
+                }
             }
             catch (ArgumentOutOfRangeException)
             {