浏览代码

[hl] Fix ArrayBytes not clearing properly after pop/shift/splice (#10726)

trethaller 2 年之前
父节点
当前提交
657dc917db
共有 1 个文件被更改,包括 5 次插入1 次删除
  1. 5 1
      std/hl/types/ArrayBytes.hx

+ 5 - 1
std/hl/types/ArrayBytes.hx

@@ -78,7 +78,9 @@ class BytesIterator<T> extends ArrayIterator<T> {
 		if (length == 0)
 		if (length == 0)
 			return null;
 			return null;
 		length--;
 		length--;
-		return bytes[length];
+		var v = bytes[length];
+		bytes[length] = cast 0;
+		return v;
 	}
 	}
 
 
 	public function push(x:T):Int {
 	public function push(x:T):Int {
@@ -106,6 +108,7 @@ class BytesIterator<T> extends ArrayIterator<T> {
 		var v = bytes[0];
 		var v = bytes[0];
 		length--;
 		length--;
 		(bytes : Bytes).blit(0, bytes, 1 << bytes.sizeBits, length << bytes.sizeBits);
 		(bytes : Bytes).blit(0, bytes, 1 << bytes.sizeBits, length << bytes.sizeBits);
+		bytes[length] = cast 0;
 		return v;
 		return v;
 	}
 	}
 
 
@@ -171,6 +174,7 @@ class BytesIterator<T> extends ArrayIterator<T> {
 		ret.size = ret.length = len;
 		ret.size = ret.length = len;
 		var end = pos + len;
 		var end = pos + len;
 		(bytes : Bytes).blit(pos << bytes.sizeBits, bytes, end << bytes.sizeBits, (length - end) << bytes.sizeBits);
 		(bytes : Bytes).blit(pos << bytes.sizeBits, bytes, end << bytes.sizeBits, (length - end) << bytes.sizeBits);
+		(bytes : Bytes).fill((length - len) << bytes.sizeBits, (len) << bytes.sizeBits, 0);
 		length -= len;
 		length -= len;
 		return ret;
 		return ret;
 	}
 	}