about summary refs log tree commit diff
path: root/Src/parse.c
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2001-07-06 09:40:01 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2001-07-06 09:40:01 +0000
commitf486329a1604c44c36e14d88d04a6520cffaa8f5 (patch)
treeb719147c391bc877d46bf6a92bb78cb34b414d42 /Src/parse.c
parent4a8b8bd7522df86d74bbfdb9c1086ae64ad6f861 (diff)
downloadzsh-f486329a1604c44c36e14d88d04a6520cffaa8f5.tar.gz
zsh-f486329a1604c44c36e14d88d04a6520cffaa8f5.tar.xz
zsh-f486329a1604c44c36e14d88d04a6520cffaa8f5.zip
15265: Src/parse.c: correction problems with new `for' syntax
Diffstat (limited to 'Src/parse.c')
-rw-r--r--Src/parse.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/Src/parse.c b/Src/parse.c
index fd7138605..f16dcfd05 100644
--- a/Src/parse.c
+++ b/Src/parse.c
@@ -878,7 +878,7 @@ static void
 par_for(int *complex)
 {
     int oecused = ecused, csh = (tok == FOREACH), p, sel = (tok == SELECT);
-    int type, ona = noaliases;
+    int type;
 
     p = ecadd(0);
 
@@ -903,27 +903,29 @@ par_for(int *complex)
 	yylex();
 	type = WC_FOR_COND;
     } else {
-	int np, n, posix_in;
+	int np, n, posix_in, ona = noaliases, onc = nocorrect;
 	infor = 0;
 	if (tok != STRING || !isident(tokstr))
 	    YYERRORV(oecused);
 	np = ecadd(0);
 	n = 0;
 	incmdpos = 1;
-	noaliases = 1;
+	noaliases = nocorrect = 1;
 	for (;;) {
 	    n++;
 	    ecstr(tokstr);
 	    yylex();	
 	    if (tok != STRING || !strcmp(tokstr, "in") || sel)
 		break;
-	    if (!isident(tokstr))
+	    if (!isident(tokstr) || errflag)
 	    {
 		noaliases = ona;
+		nocorrect = onc;
 		YYERRORV(oecused);
 	    }
 	}
 	noaliases = ona;
+	nocorrect = onc;
 	ecbuf[np] = n;
 	posix_in = isnewlin;
 	while (isnewlin)