Bladeren bron

[php] fixed array writing at the length of an array (fixes #6874)

Alexander Kuzmenko 7 jaren geleden
bovenliggende
commit
b00048aeb8
2 gewijzigde bestanden met toevoegingen van 6 en 2 verwijderingen
  1. 4 2
      std/php/_std/Array.hx
  2. 2 0
      tests/unit/src/unitstd/Array.unit.hx

+ 4 - 2
std/php/_std/Array.hx

@@ -192,8 +192,10 @@ class Array<T> implements ArrayAccess<Int,T> {
 
 	@:noCompletion
 	function offsetSet( offset:Int, value:T ) : Void {
-		if (length < offset) {
-			arr = Global.array_pad(arr, offset + 1, null);
+		if (length <= offset) {
+			if(length < offset) {
+				arr = Global.array_pad(arr, offset + 1, null);
+			}
 			length = offset + 1;
 		}
 		arr[offset] = value;

+ 2 - 0
tests/unit/src/unitstd/Array.unit.hx

@@ -4,6 +4,8 @@
 var a = [];
 a[4] = 1;
 a.length == 5;
+a[a.length] = 1;
+a.length == 6;
 
 // concat
 [].concat([]) == [];