diff options
author | Peter Stephenson <pws@zsh.org> | 2016-12-05 12:29:23 +0000 |
---|---|---|
committer | Peter Stephenson <pws@zsh.org> | 2016-12-05 12:29:23 +0000 |
commit | 0e4aa6f2f64fb276537adecfe755a752a3fcccb1 (patch) | |
tree | 969b5cf504a28cf9b48fbfff3170b187d7d79dfb | |
parent | c03228f9ed28dfaa9ded49eabb93c04def5ac547 (diff) | |
download | zsh-0e4aa6f2f64fb276537adecfe755a752a3fcccb1.tar.gz zsh-0e4aa6f2f64fb276537adecfe755a752a3fcccb1.tar.xz zsh-0e4aa6f2f64fb276537adecfe755a752a3fcccb1.zip |
Additional case for ERR_RETURN and ERR_EXIT.
Don't trigger just because status is non-zero at end of current shell group.
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Src/exec.c | 1 | ||||
-rw-r--r-- | Test/C03traps.ztst | 17 |
3 files changed, 21 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index c0afd0773..b912821e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2016-12-05 Peter Stephenson <p.stephenson@samsung.com> + * 40097: Src/exec.c, Test/C03traps.ztst: Don't trigger ERR_EXIT + or ERR_RETURN on non-zero status after current shell group, either. + * 40096: Src/exec.c, Src/loop.c, Src/zsh.h, Test/C03traps.ztst: Don't trigger ERR_EXIT or ERR_RETURN on non-zero status after shell construct. diff --git a/Src/exec.c b/Src/exec.c index 6e197ddf2..a439aec7f 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -429,6 +429,7 @@ execcursh(Estate state, int do_exec) cmdpop(); state->pc = end; + this_noerrexit = 1; return lastval; } diff --git a/Test/C03traps.ztst b/Test/C03traps.ztst index e94fb6f85..dc386a44e 100644 --- a/Test/C03traps.ztst +++ b/Test/C03traps.ztst @@ -664,6 +664,15 @@ F:Must be tested with a top-level script rather than source or function >OK (setopt err_exit + { + false && true + } + print OK + ) +0:ERR_EXIT not triggered by status 1 at end of { } +>OK + + (setopt err_exit for x in y; do false done @@ -696,6 +705,14 @@ F:Must be tested with a top-level script rather than source or function ) 1:ERR_EXIT triggered by status 1 within if + (setopt err_exit + { + false + } + print OK + ) +1:ERR_EXIT triggered by status 1 within { } + if zmodload zsh/system 2>/dev/null; then ( trap 'echo TERM; exit 2' TERM |