summaryrefslogtreecommitdiffstats
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
parentzsh-workers/10105 (diff)
downloadzsh-16ea1f357d02481efa55d5304ab8f452e37ca6b4.tar
zsh-16ea1f357d02481efa55d5304ab8f452e37ca6b4.tar.gz
zsh-16ea1f357d02481efa55d5304ab8f452e37ca6b4.tar.bz2
zsh-16ea1f357d02481efa55d5304ab8f452e37ca6b4.tar.lz
zsh-16ea1f357d02481efa55d5304ab8f452e37ca6b4.tar.xz
zsh-16ea1f357d02481efa55d5304ab8f452e37ca6b4.tar.zst
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);