aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Dewar <seandewar@users.noreply.github.com>2021-07-29 21:06:12 +0100
committerSean Dewar <seandewar@users.noreply.github.com>2021-09-15 22:57:53 +0100
commit726b25528863ecd25f62f488b41bc984b842458c (patch)
tree00c413a00150fceef8e16066c944dd710c8b27dd
parente7772c051fde36aa856d413baf6bef6ef6cd82d4 (diff)
downloadrneovim-726b25528863ecd25f62f488b41bc984b842458c.tar.gz
rneovim-726b25528863ecd25f62f488b41bc984b842458c.tar.bz2
rneovim-726b25528863ecd25f62f488b41bc984b842458c.zip
vim-patch:8.1.1671: copying a blob may result in it being locked
Problem: Copying a blob may result in it being locked. Solution: Reset v_lock. (Ken Takata, closes vim/vim#4648) https://github.com/vim/vim/commit/b7b9efbccfe17ee3f7b1bb877b7745d5bfbf0804
-rw-r--r--src/nvim/eval/typval.c1
-rw-r--r--src/nvim/testdir/test_blob.vim4
2 files changed, 5 insertions, 0 deletions
diff --git a/src/nvim/eval/typval.c b/src/nvim/eval/typval.c
index 5b416dfa7d..d983ce14b5 100644
--- a/src/nvim/eval/typval.c
+++ b/src/nvim/eval/typval.c
@@ -2262,6 +2262,7 @@ void tv_blob_copy(typval_T *const from, typval_T *const to)
assert(from->v_type == VAR_BLOB);
to->v_type = VAR_BLOB;
+ to->v_lock = VAR_UNLOCKED;
if (from->vval.v_blob == NULL) {
to->vval.v_blob = NULL;
} else {
diff --git a/src/nvim/testdir/test_blob.vim b/src/nvim/testdir/test_blob.vim
index 1faa9af32c..575c757837 100644
--- a/src/nvim/testdir/test_blob.vim
+++ b/src/nvim/testdir/test_blob.vim
@@ -71,6 +71,10 @@ func Test_blob_assign()
call assert_fails('let b .= "xx"', 'E734:')
call assert_fails('let b += "xx"', 'E734:')
call assert_fails('let b[1:1] .= 0z55', 'E734:')
+
+ let l = [0z12]
+ let m = deepcopy(l)
+ let m[0] = 0z34 " E742 or E741 should not occur.
endfunc
func Test_blob_get_range()