diff options
author | Bram Moolenaar <Bram@vim.org> | 2023-06-05 19:46:18 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2023-06-05 19:46:18 +0100 |
commit | 16d2c02c80e6d4822010816e085cabf91bf91423 (patch) | |
tree | 37a68424ac179f9fa5afff734ed79d2dfc9940ba /src | |
parent | d9a92dc70b20c76cef9ca186676583c92c14311c (diff) |
patch 9.0.1611: v:maxcol can be changed in a :for loopv9.0.1611
Problem: v:maxcol can be changed in a :for loop.
Solution: Check for read-only loop variable. (closes #12470)
Diffstat (limited to 'src')
-rw-r--r-- | src/evalvars.c | 3 | ||||
-rw-r--r-- | src/testdir/test_eval_stuff.vim | 1 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 5 insertions, 1 deletions
diff --git a/src/evalvars.c b/src/evalvars.c index bebee2a5bc..35a1d20831 100644 --- a/src/evalvars.c +++ b/src/evalvars.c @@ -3842,7 +3842,8 @@ set_var_const( } if ((flags & ASSIGN_FOR_LOOP) == 0 - && var_check_permission(di, name) == FAIL) + ? var_check_permission(di, name) == FAIL + : var_check_ro(di->di_flags, name, FALSE)) goto failed; } else diff --git a/src/testdir/test_eval_stuff.vim b/src/testdir/test_eval_stuff.vim index 46ec12df16..a346399eb5 100644 --- a/src/testdir/test_eval_stuff.vim +++ b/src/testdir/test_eval_stuff.vim @@ -126,6 +126,7 @@ func Test_for_invalid() call assert_fails("for x in 99", 'E1098:') call assert_fails("for x in function('winnr')", 'E1098:') call assert_fails("for x in {'a': 9}", 'E1098:') + call assert_fails("for v:maxcol in range(1)", 'E46:') if 0 /1/5/2/s/\n diff --git a/src/version.c b/src/version.c index a8f2104698..2e3c240f6e 100644 --- a/src/version.c +++ b/src/version.c @@ -696,6 +696,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1611, +/**/ 1610, /**/ 1609, |