Mercurial > vim
diff src/vim9compile.c @ 26238:14b4c778b61e v8.2.3650
patch 8.2.3650: Vim9: for loop variable can be a list member
Commit: https://github.com/vim/vim/commit/3b3755fe19e9ded2a1c45f14b2c6fa065bcaf2c6
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Nov 22 20:10:18 2021 +0000
patch 8.2.3650: Vim9: for loop variable can be a list member
Problem: Vim9: for loop variable can be a list member.
Solution: Check for valid variable name. (closes https://github.com/vim/vim/issues/9179)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 22 Nov 2021 21:15:03 +0100 |
parents | e861c5aaedd8 |
children | 36361f080ffd |
line wrap: on
line diff
--- a/src/vim9compile.c +++ b/src/vim9compile.c @@ -8220,8 +8220,8 @@ compile_for(char_u *arg_start, cctx_T *c for (idx = 0; idx < var_count; ++idx) { assign_dest_T dest = dest_local; - int opt_flags = 0; - int vimvaridx = -1; + int opt_flags = 0; + int vimvaridx = -1; type_T *type = &t_any; type_T *lhs_type = &t_any; where_T where = WHERE_INIT; @@ -8255,6 +8255,8 @@ compile_for(char_u *arg_start, cctx_T *c } else { + if (!valid_varname(arg, varlen, FALSE)) + goto failed; if (lookup_local(arg, varlen, NULL, cctx) == OK) { semsg(_(e_variable_already_declared), arg);