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()
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1671,
+/**/
     1670,
 /**/
     1669,