Explorar el Código

C#: Fix Array.AddRange index out of bounds

Fix Array.AddRange index out of bounds
Redwarx008 hace 2 años
padre
commit
eb1fb254a6
Se han modificado 1 ficheros con 4 adiciones y 2 borrados
  1. 4 2
      modules/mono/glue/GodotSharp/GodotSharp/Core/Array.cs

+ 4 - 2
modules/mono/glue/GodotSharp/GodotSharp/Core/Array.cs

@@ -554,6 +554,7 @@ namespace Godot.Collections
             // instead of growing it as we add items.
             // instead of growing it as we add items.
             if (collection.TryGetNonEnumeratedCount(out int count))
             if (collection.TryGetNonEnumeratedCount(out int count))
             {
             {
+                int oldCount = Count;
                 Resize(Count + count);
                 Resize(Count + count);
 
 
                 using var enumerator = collection.GetEnumerator();
                 using var enumerator = collection.GetEnumerator();
@@ -561,7 +562,7 @@ namespace Godot.Collections
                 for (int i = 0; i < count; i++)
                 for (int i = 0; i < count; i++)
                 {
                 {
                     enumerator.MoveNext();
                     enumerator.MoveNext();
-                    this[count + i] = Variant.From(enumerator.Current);
+                    this[oldCount + i] = Variant.From(enumerator.Current);
                 }
                 }
 
 
                 return;
                 return;
@@ -1578,6 +1579,7 @@ namespace Godot.Collections
             // instead of growing it as we add items.
             // instead of growing it as we add items.
             if (collection.TryGetNonEnumeratedCount(out int count))
             if (collection.TryGetNonEnumeratedCount(out int count))
             {
             {
+                int oldCount = Count;
                 Resize(Count + count);
                 Resize(Count + count);
 
 
                 using var enumerator = collection.GetEnumerator();
                 using var enumerator = collection.GetEnumerator();
@@ -1585,7 +1587,7 @@ namespace Godot.Collections
                 for (int i = 0; i < count; i++)
                 for (int i = 0; i < count; i++)
                 {
                 {
                     enumerator.MoveNext();
                     enumerator.MoveNext();
-                    this[count + i] = enumerator.Current;
+                    this[oldCount + i] = enumerator.Current;
                 }
                 }
 
 
                 return;
                 return;