diff options
author | Axel Beckert <abe@deuxchevaux.org> | 2018-04-07 15:12:57 +0200 |
---|---|---|
committer | Axel Beckert <abe@deuxchevaux.org> | 2018-04-07 15:12:57 +0200 |
commit | 6e1ab9aa550695ee7e3d467b4173c0b83ba7f759 (patch) | |
tree | 8fb7faa4364a7cbf1cba48296a5f537e13f2a8d9 /Src/parse.c | |
parent | 5ad56a41f1ee2e61abca079f5ea8909f895ac2dd (diff) | |
parent | f027f1d6e876708bc75d4217e1ca26898658d8d3 (diff) | |
download | zsh-6e1ab9aa550695ee7e3d467b4173c0b83ba7f759.tar.gz zsh-6e1ab9aa550695ee7e3d467b4173c0b83ba7f759.zip |
Merge tag 'zsh-5.4.2-test-2' / 'upstream' branch into 'debian' branch
Test version 2 prior to zsh 5.5.
Diffstat (limited to 'Src/parse.c')
-rw-r--r-- | Src/parse.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/Src/parse.c b/Src/parse.c index 27052527d..47e5a246a 100644 --- a/Src/parse.c +++ b/Src/parse.c @@ -808,8 +808,13 @@ par_sublist(int *cmplx) WC_SUBLIST_END), f, (e - 1 - p), c); cmdpop(); - } else + } else { + if (tok == AMPER || tok == AMPERBANG) { + c = 1; + *cmplx |= c; + } set_sublist_code(p, WC_SUBLIST_END, f, (e - 1 - p), c); + } return 1; } else { ecused--; @@ -1843,6 +1848,10 @@ par_simple(int *cmplx, int nr) incmdpos = oldcmdpos; isnull = 0; assignments = 1; + } else if (IS_REDIROP(tok)) { + *cmplx = c = 1; + nr += par_redir(&r, NULL); + continue; } else break; zshlex(); @@ -2737,7 +2746,8 @@ freeeprog(Eprog p) DPUTS(p->nref < 0 && !(p->flags & EF_HEAP), "Real EPROG has nref < 0"); DPUTS(p->nref < -1, "Uninitialised EPROG nref"); #ifdef MAX_FUNCTION_DEPTH - DPUTS(p->nref > MAX_FUNCTION_DEPTH + 10, "Overlarge EPROG nref"); + DPUTS(zsh_funcnest >=0 && p->nref > zsh_funcnest + 10, + "Overlarge EPROG nref"); #endif if (p->nref > 0 && !--p->nref) { for (i = p->npats, pp = p->pats; i--; pp++) @@ -3667,15 +3677,15 @@ try_dump_file(char *path, char *name, char *file, int *ksh, int test_only) * function. */ queue_signals(); if (!rd && - (rc || std.st_mtime > stc.st_mtime) && - (rn || std.st_mtime > stn.st_mtime) && + (rc || std.st_mtime >= stc.st_mtime) && + (rn || std.st_mtime >= stn.st_mtime) && (prog = check_dump_file(dig, &std, name, ksh, test_only))) { unqueue_signals(); return prog; } /* No digest file. Now look for the per-function compiled file. */ if (!rc && - (rn || stc.st_mtime > stn.st_mtime) && + (rn || stc.st_mtime >= stn.st_mtime) && (prog = check_dump_file(wc, &stc, name, ksh, test_only))) { unqueue_signals(); return prog; @@ -3714,7 +3724,7 @@ try_source_file(char *file) rn = stat(file, &stn); queue_signals(); - if (!rc && (rn || stc.st_mtime > stn.st_mtime) && + if (!rc && (rn || stc.st_mtime >= stn.st_mtime) && (prog = check_dump_file(wc, &stc, tail, NULL, 0))) { unqueue_signals(); return prog; |