# HG changeset patch # User Bram Moolenaar # Date 1685991605 -7200 # Node ID fb453aba3d2bd8953bcaf243ef1aa640eadff110 # Parent 34ebbd52be7ec0750eceeac079c146a8a8467ce8 patch 9.0.1611: v:maxcol can be changed in a :for loop Commit: https://github.com/vim/vim/commit/16d2c02c80e6d4822010816e085cabf91bf91423 Author: Bram Moolenaar Date: Mon Jun 5 19:46:18 2023 +0100 patch 9.0.1611: v:maxcol can be changed in a :for loop Problem: v:maxcol can be changed in a :for loop. Solution: Check for read-only loop variable. (closes https://github.com/vim/vim/issues/12470) diff --git a/src/evalvars.c b/src/evalvars.c --- 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 46ec12df16a639a6aa7307f1c5488d1ee5ec9748..a346399eb513bbf2c45a4c98f5d823d206e7edbc GIT binary patch literal 26047 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