summaryrefslogtreecommitdiffstats
path: root/src/blob.c
diff options
context:
space:
mode:
authorSean Dewar <seandewar@users.noreply.github.com>2021-08-04 19:25:54 +0200
committerBram Moolenaar <Bram@vim.org>2021-08-04 19:25:54 +0200
commit80d7395dcfe96158428da6bb3d28a6eee1244e28 (patch)
tree84b3b09fe59c97f69d6248e87cf0b51dfdfd82e6 /src/blob.c
parent0eec8519424eaea7baebfda979c33dd609a4e3fa (diff)
patch 8.2.3284: no error for insert() or remove() changing a locked blobv8.2.3284
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)
Diffstat (limited to 'src/blob.c')
-rw-r--r--src/blob.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/blob.c b/src/blob.c
index 57fe58b055..2138ac0740 100644
--- a/src/blob.c
+++ b/src/blob.c
@@ -412,16 +412,19 @@ blob_set_range(blob_T *dest, long n1, long n2, typval_T *src)
* "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;