diff src/blob.c @ 25495:7144d2ffc86b v8.2.3284

patch 8.2.3284: no error for insert() or remove() changing a locked blob Commit: https://github.com/vim/vim/commit/80d7395dcfe96158428da6bb3d28a6eee1244e28 Author: Sean Dewar <seandewar@users.noreply.github.com> Date: Wed Aug 4 19:25:54 2021 +0200 patch 8.2.3284: no error for insert() or remove() changing a locked blob Problem: No error for insert() or remove() changing a locked blob. Solution: Check a blob is not locked before changing it. (Sean Dewar, closes #8696)
author Bram Moolenaar <Bram@vim.org>
date Wed, 04 Aug 2021 19:30:04 +0200
parents e2be9f3c5907
children 8d55e978f95b
line wrap: on
line diff
--- a/src/blob.c
+++ b/src/blob.c
@@ -412,16 +412,19 @@ blob_set_range(blob_T *dest, long n1, lo
  * "remove({blob})" function
  */
     void
-blob_remove(typval_T *argvars, typval_T *rettv)
+blob_remove(typval_T *argvars, typval_T *rettv, char_u *arg_errmsg)
 {
+    blob_T	*b = argvars[0].vval.v_blob;
     int		error = FALSE;
     long	idx;
     long	end;
 
+    if (b != NULL && value_check_lock(b->bv_lock, arg_errmsg, TRUE))
+	return;
+
     idx = (long)tv_get_number_chk(&argvars[1], &error);
     if (!error)
     {
-	blob_T  *b = argvars[0].vval.v_blob;
 	int	len = blob_len(b);
 	char_u  *p;