浏览代码

[eval] fix Array.resize retaining values

closes #11317
Simon Krajewski 1 年之前
父节点
当前提交
71c41a0966
共有 2 个文件被更改,包括 12 次插入2 次删除
  1. 2 2
      src/macro/eval/evalArray.ml
  2. 10 0
      tests/unit/src/unit/issues/Issue11317.hx

+ 2 - 2
src/macro/eval/evalArray.ml

@@ -200,6 +200,6 @@ let resize a l =
 		set a (l - 1) vnull;
 		()
 	end else if a.alength > l then begin
-		ignore(splice a l (a.alength - l) a.alength);
-		()
+		Array.fill a.avalues l (a.alength - l) vnull;
+		a.alength <- l;
 	end else ()

+ 10 - 0
tests/unit/src/unit/issues/Issue11317.hx

@@ -0,0 +1,10 @@
+package unit.issues;
+
+class Issue11317 extends Test {
+	function test() {
+		var array:Array<String> = ["0", "1", "2", "3", "4"];
+		array.resize(0);
+		array.resize(5);
+		utest.Assert.same([null, null, null, null, null], array);
+	}
+}