summaryrefslogtreecommitdiffstats
path: root/src/evalvars.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-04-01 15:26:58 +0100
committerBram Moolenaar <Bram@vim.org>2022-04-01 15:26:58 +0100
commit22ebd172e48ba060c8a7bae3dbf6480b7596d937 (patch)
treeff1a418ba71300eaf1ddd85e37e682b16ade4958 /src/evalvars.c
parentffe6e646dc6aede3bce062e40256ce0edc64bc08 (diff)
patch 8.2.4662: no error for using out of range list indexv8.2.4662
Problem: No error for using out of range list index. Solution: Check list index at script level like in compiled function. (closes #10051)
Diffstat (limited to 'src/evalvars.c')
-rw-r--r--src/evalvars.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/evalvars.c b/src/evalvars.c
index 202ada1914..dd70427d32 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -1647,13 +1647,15 @@ ex_let_one(
{
lval_T lv;
char_u *p;
+ int lval_flags = (flags & (ASSIGN_NO_DECL | ASSIGN_DECL))
+ ? GLV_NO_DECL : 0;
+ if (op != NULL && *op != '=')
+ lval_flags |= GLV_ASSIGN_WITH_OP;
// ":let var = expr": Set internal variable.
// ":let var: type = expr": Set internal variable with type.
// ":let {expr} = expr": Idem, name made with curly braces
- p = get_lval(arg, tv, &lv, FALSE, FALSE,
- (flags & (ASSIGN_NO_DECL | ASSIGN_DECL))
- ? GLV_NO_DECL : 0, FNE_CHECK_START);
+ p = get_lval(arg, tv, &lv, FALSE, FALSE, lval_flags, FNE_CHECK_START);
if (p != NULL && lv.ll_name != NULL)
{
if (endchars != NULL && vim_strchr(endchars,