aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/eval.c
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2017-02-23 00:59:11 +0300
committerZyX <kp-pav@yandex.ru>2017-02-23 19:48:41 +0300
commitd8a7e5fdbb7d94f06e30aedaea42028caec52c95 (patch)
tree9fd58ebc04c450f95dc9d6492b0f95ae18b047a8 /src/nvim/eval.c
parent9668d26a4384376d1eb052aa093d65c060359fef (diff)
downloadrneovim-d8a7e5fdbb7d94f06e30aedaea42028caec52c95.tar.gz
rneovim-d8a7e5fdbb7d94f06e30aedaea42028caec52c95.tar.bz2
rneovim-d8a7e5fdbb7d94f06e30aedaea42028caec52c95.zip
eval: Forbid (un)locking b:changedtick
Port of vim-patch:8.0.0343
Diffstat (limited to 'src/nvim/eval.c')
-rw-r--r--src/nvim/eval.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index da084d8ecc..25ac0e2ad1 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -3091,6 +3091,12 @@ static int do_lock_var(lval_T *lp, char_u *name_end, int deep, int lock)
true);
if (di == NULL) {
ret = FAIL;
+ } else if ((di->di_flags & DI_FLAGS_FIX)
+ && di->di_tv.v_type != VAR_DICT
+ && di->di_tv.v_type != VAR_LIST) {
+ // For historical reasons this error is not given for Lists and
+ // Dictionaries. E.g. b: dictionary may be locked/unlocked.
+ emsgf(_("E940: Cannot lock or unlock variable %s"), lp->ll_name);
} else {
if ((di->di_flags & (DI_FLAGS_LOCK|DI_FLAGS_FIX))
== (DI_FLAGS_LOCK|DI_FLAGS_FIX)) {