aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZyX <kp-pav@yandex.ru>2017-02-21 00:12:22 +0300
committerZyX <kp-pav@yandex.ru>2017-02-23 19:46:45 +0300
commit9972db79c81e4369fde0d0144c017160a1677c0f (patch)
tree09f5a258aa454bffb69829bc0ff2411fc66e1184
parentd5ab50a04011dd41471e9db47b40c26707c29656 (diff)
downloadrneovim-9972db79c81e4369fde0d0144c017160a1677c0f.tar.gz
rneovim-9972db79c81e4369fde0d0144c017160a1677c0f.tar.bz2
rneovim-9972db79c81e4369fde0d0144c017160a1677c0f.zip
eval: Specify more precise len for var_check_ro in get_lval
-rw-r--r--src/nvim/eval.c8
-rw-r--r--test/functional/eval/changedtick_spec.lua12
2 files changed, 10 insertions, 10 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 2df958b23d..1a1f8535d9 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -1964,7 +1964,7 @@ ex_let_one (
*/
static char_u *
get_lval (
- char_u *name,
+ char_u *const name,
typval_T *rettv,
lval_T *lp,
int unlet,
@@ -2192,7 +2192,7 @@ get_lval (
break;
// existing variable, need to check if it can be changed
} else if (var_check_ro(lp->ll_di->di_flags, (const char *)name,
- STRLEN(name))) {
+ (size_t)(p - name))) {
if (len == -1) {
clear_tv(&var1);
}
@@ -20493,8 +20493,8 @@ set_var (
if (v != NULL) {
// existing variable, need to clear the value
- if (var_check_ro(v->di_flags, (const char *)name, STRLEN(name))
- || tv_check_lock(v->di_tv.v_lock, (const char *)name, STRLEN(name))) {
+ if (var_check_ro(v->di_flags, (const char *)name, name_len)
+ || tv_check_lock(v->di_tv.v_lock, (const char *)name, name_len)) {
return;
}
diff --git a/test/functional/eval/changedtick_spec.lua b/test/functional/eval/changedtick_spec.lua
index ede03ff3e9..f4c3dbc97f 100644
--- a/test/functional/eval/changedtick_spec.lua
+++ b/test/functional/eval/changedtick_spec.lua
@@ -60,11 +60,11 @@ describe('b:changedtick', function()
eq(0, exc_exec('let d = b:'))
eq('\nE46: Cannot change read-only variable "b:changedtick"',
redir_exec('let b:changedtick = ' .. ctn))
- eq('\nE46: Cannot change read-only variable "b:["changedtick"] = '..ctn..'"',
+ eq('\nE46: Cannot change read-only variable "b:["changedtick"]"',
redir_exec('let b:["changedtick"] = ' .. ctn))
- eq('\nE46: Cannot change read-only variable "b:.changedtick = '..ctn..'"',
+ eq('\nE46: Cannot change read-only variable "b:.changedtick"',
redir_exec('let b:.changedtick = ' .. ctn))
- eq('\nE46: Cannot change read-only variable "d.changedtick = '..ctn..'"',
+ eq('\nE46: Cannot change read-only variable "d.changedtick"',
redir_exec('let d.changedtick = ' .. ctn))
-- FIXME
-- eq({fales, ''},
@@ -83,11 +83,11 @@ describe('b:changedtick', function()
-- {pcall(curbufmeths.del_var, 'changedtick')})
eq(ct, changedtick())
- eq('\nE46: Cannot change read-only variable "b:["changedtick"] += '..ctn..'"',
+ eq('\nE46: Cannot change read-only variable "b:["changedtick"]"',
redir_exec('let b:["changedtick"] += ' .. ctn))
- eq('\nE46: Cannot change read-only variable "b:["changedtick"] -= '..ctn..'"',
+ eq('\nE46: Cannot change read-only variable "b:["changedtick"]"',
redir_exec('let b:["changedtick"] -= ' .. ctn))
- eq('\nE46: Cannot change read-only variable "b:["changedtick"] .= '..ctn..'"',
+ eq('\nE46: Cannot change read-only variable "b:["changedtick"]"',
redir_exec('let b:["changedtick"] .= ' .. ctn))
eq(ct, changedtick())