Mercurial > vim
changeset 17344:a0eb2ff0f297 v8.1.1671
patch 8.1.1671: copying a blob may result in it being locked
commit https://github.com/vim/vim/commit/b7b9efbccfe17ee3f7b1bb877b7745d5bfbf0804
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jul 12 20:17:03 2019 +0200
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 https://github.com/vim/vim/issues/4648)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 12 Jul 2019 20:30:06 +0200 |
parents | ba366c7e8d14 |
children | 847e18dbfac2 |
files | src/blob.c src/testdir/test_blob.vim src/version.c |
diffstat | 3 files changed, 7 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/blob.c +++ b/src/blob.c @@ -63,6 +63,7 @@ blob_copy(typval_T *from, typval_T *to) int ret = OK; to->v_type = VAR_BLOB; + to->v_lock = 0; if (from->vval.v_blob == NULL) to->vval.v_blob = NULL; else if (rettv_blob_alloc(to) == FAIL)
--- a/src/testdir/test_blob.vim +++ b/src/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()