Selaa lähdekoodia

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

trethaller 2 vuotta sitten
vanhempi
commit
657dc917db
1 muutettua tiedostoa jossa 5 lisäystä ja 1 poistoa
  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)
 			return null;
 		length--;
-		return bytes[length];
+		var v = bytes[length];
+		bytes[length] = cast 0;
+		return v;
 	}
 
 	public function push(x:T):Int {
@@ -106,6 +108,7 @@ class BytesIterator<T> extends ArrayIterator<T> {
 		var v = bytes[0];
 		length--;
 		(bytes : Bytes).blit(0, bytes, 1 << bytes.sizeBits, length << bytes.sizeBits);
+		bytes[length] = cast 0;
 		return v;
 	}
 
@@ -171,6 +174,7 @@ class BytesIterator<T> extends ArrayIterator<T> {
 		ret.size = ret.length = len;
 		var end = pos + len;
 		(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;
 		return ret;
 	}