diff options
| author | Peter Stephenson <pws@zsh.org> | 2016-12-05 11:21:01 +0000 |
|---|---|---|
| committer | Peter Stephenson <pws@zsh.org> | 2016-12-05 11:21:01 +0000 |
| commit | c03228f9ed28dfaa9ded49eabb93c04def5ac547 (patch) | |
| tree | 7ea3ee905bf9531dce1e4e46b206ac9eb438d566 /Src/exec.c | |
| parent | unposted: vcs_info git: Handle rebase-apply sequences with >=10000 patches. (diff) | |
| download | zsh-c03228f9ed28dfaa9ded49eabb93c04def5ac547.tar zsh-c03228f9ed28dfaa9ded49eabb93c04def5ac547.tar.gz zsh-c03228f9ed28dfaa9ded49eabb93c04def5ac547.tar.bz2 zsh-c03228f9ed28dfaa9ded49eabb93c04def5ac547.tar.lz zsh-c03228f9ed28dfaa9ded49eabb93c04def5ac547.tar.xz zsh-c03228f9ed28dfaa9ded49eabb93c04def5ac547.tar.zst zsh-c03228f9ed28dfaa9ded49eabb93c04def5ac547.zip | |
Extra case for ERR_RETURN and ERR_EXIT.
Don't trigger just because status is non-zero at end of
complex shell construct as this may be a case we've already
suppressed.
Diffstat (limited to 'Src/exec.c')
| -rw-r--r-- | Src/exec.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Src/exec.c b/Src/exec.c index f544a33e7..6e197ddf2 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -46,6 +46,11 @@ enum { /**/ int noerrexit; +/* used to suppress ERREXIT for one occurrence */ + +/**/ +int this_noerrexit; + /* * noerrs = 1: suppress error messages * noerrs = 2: don't set errflag on parse error, either @@ -1238,7 +1243,8 @@ execlist(Estate state, int dont_change_job, int exiting) } while (wc_code(code) == WC_LIST && !breaks && !retflag && !errflag) { int donedebug; - int this_noerrexit = 0, this_donetrap = 0; + int this_donetrap = 0; + this_noerrexit = 0; ltype = WC_LIST_TYPE(code); csp = cmdsp; @@ -5813,6 +5819,7 @@ execsave(void) es->trapisfunc = trapisfunc; es->traplocallevel = traplocallevel; es->noerrs = noerrs; + es->this_noerrexit = this_noerrexit; es->underscore = ztrdup(zunderscore); es->next = exstack; exstack = es; @@ -5847,6 +5854,7 @@ execrestore(void) trapisfunc = en->trapisfunc; traplocallevel = en->traplocallevel; noerrs = en->noerrs; + this_noerrexit = en->this_noerrexit; setunderscore(en->underscore); zsfree(en->underscore); free(en); |
