patch 8.1.0798: changing a blob while iterating over it works strangely
Problem: Changing a blob while iterating over it works strangely.
Solution: Make a copy of the Blob before iterating.
diff --git a/src/testdir/test_blob.vim b/src/testdir/test_blob.vim
index 964ed22..9eb2057 100644
--- a/src/testdir/test_blob.vim
+++ b/src/testdir/test_blob.vim
@@ -154,6 +154,7 @@
call assert_equal(i, byte)
let i += 1
endfor
+ call assert_equal(4, i)
let blob = 0z00
call remove(blob, 0)
@@ -161,6 +162,19 @@
for byte in blob
call assert_error('loop over empty blob')
endfor
+
+ let blob = 0z0001020304
+ let i = 0
+ for byte in blob
+ call assert_equal(i, byte)
+ if i == 1
+ call remove(blob, 0)
+ elseif i == 3
+ call remove(blob, 3)
+ endif
+ let i += 1
+ endfor
+ call assert_equal(5, i)
endfunc
func Test_blob_concatenate()