Mercurial > vim
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;