# HG changeset patch # User Bram Moolenaar # Date 1634989504 -7200 # Node ID 1c567eb92222c31ae03db4d59b37d2054271d2d7 # Parent ebedba7a48986ea8f8b30f842b312f4e6d534888 patch 8.2.3559: loop variable recreated every time Commit: https://github.com/vim/vim/commit/ee56f3f119c4378a5b62b4d504cff3373b363308 Author: Bram Moolenaar Date: Sat Oct 23 12:34:27 2021 +0100 patch 8.2.3559: loop variable recreated every time Problem: Loop variable recreated every time. Solution: Keep the loop variable when looping. diff --git a/src/ex_eval.c b/src/ex_eval.c --- a/src/ex_eval.c +++ b/src/ex_eval.c @@ -1191,8 +1191,9 @@ ex_while(exarg_T *eap) & CSF_FUNC_DEF; // Any variables defined in the previous round are no longer - // visible. - for (i = cstack->cs_script_var_len[cstack->cs_idx]; + // visible. Keep the first one, it is the loop variable that + // we reuse every time around. + for (i = cstack->cs_script_var_len[cstack->cs_idx] + 1; i < si->sn_var_vals.ga_len; ++i) { svar_T *sv = ((svar_T *)si->sn_var_vals.ga_data) + i; diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -758,6 +758,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3559, +/**/ 3558, /**/ 3557,