summary refs log tree commit diff
path: root/Src/parse.c
diff options
context:
space:
mode:
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)