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);