about summary refs log tree commit diff
path: root/Src/parse.c
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-03-13 09:57:05 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-03-13 09:57:05 +0000
commit16ea1f357d02481efa55d5304ab8f452e37ca6b4 (patch)
tree13fde2aa20a8aee6fc85804d7c9764fd2e9b9658 /Src/parse.c
parentb1fcad6a63555840fd50a1678a7755443f892665 (diff)
downloadzsh-16ea1f357d02481efa55d5304ab8f452e37ca6b4.tar.gz
zsh-16ea1f357d02481efa55d5304ab8f452e37ca6b4.tar.xz
zsh-16ea1f357d02481efa55d5304ab8f452e37ca6b4.zip
zsh-workers/10106
Diffstat (limited to 'Src/parse.c')
-rw-r--r--Src/parse.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/Src/parse.c b/Src/parse.c
index 73ed40e2f..d8028f296 100644
--- a/Src/parse.c
+++ b/Src/parse.c
@@ -1264,13 +1264,16 @@ par_repeat(int *complex)
 static void
 par_subsh(int *complex)
 {
-    int oecused = ecused, otok = tok;
+    int oecused = ecused, otok = tok, p;
 
-    ecadd(tok == INPAR ? WCB_SUBSH() : WCB_CURSH());
+    p = ecadd(0);
     yylex();
-    par_save_list(complex);
+    par_list(complex);
+    ecadd(WCB_END());
     if (tok != ((otok == INPAR) ? OUTPAR : OUTBRACE))
 	YYERRORV(oecused);
+    ecbuf[p] = (otok == INPAR ? WCB_SUBSH(ecused - 1 - p) :
+		WCB_CURSH(ecused - 1 - p));
     incmdpos = 1;
     yylex();
 }
@@ -2422,6 +2425,7 @@ build_dump(char *nam, char *dump, char **files, int ali, int map)
 	    zfree(file, flen);
 	    zerrnam(nam, "can't read file: %s", *files, 0);
 	    noaliases = ona;
+	    errflag  = 0;
 	    return 1;
 	}
 	zfree(file, flen);