diff options
author | Philippe Altherr <philippe.altherr@gmail.com> | 2022-12-03 21:46:42 -0800 |
---|---|---|
committer | Bart Schaefer <schaefer@zsh.org> | 2022-12-03 21:46:42 -0800 |
commit | 8086f106159c2e9fc562b5ce88b8aefdb5fe5d23 (patch) | |
tree | 558ea5db4b0546a466d62389d0d058915d674573 | |
parent | ab9c579ef9a1ad6482267719f5d031f6a5dbf24e (diff) | |
download | zsh-8086f106159c2e9fc562b5ce88b8aefdb5fe5d23.tar.gz zsh-8086f106159c2e9fc562b5ce88b8aefdb5fe5d23.tar.xz zsh-8086f106159c2e9fc562b5ce88b8aefdb5fe5d23.zip |
51094: consistent use of bit-manipulation for noerrexit value changes
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Src/exec.c | 6 | ||||
-rw-r--r-- | Src/loop.c | 2 |
3 files changed, 7 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog index 91c8e69d3..8caeecd81 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2022-12-03 Bart Schaefer <schaefer@zsh.org> + * Philippe Altherr: 51094: Src/exec.c, Src/loop.c: consistent + use of bit-manipulation for noerrexit flag value changes + * Philippe Altherr: 51098: Src/exec.c, Src/loop.c, Src/zsh.h: remove unreachable NOERREXIT_UNTIL_EXEC code and effects diff --git a/Src/exec.c b/Src/exec.c index 1dd569019..1810fca5e 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -1415,7 +1415,7 @@ execlist(Estate state, int dont_change_job, int exiting) int oerrexit_opt = opts[ERREXIT]; Param pm; opts[ERREXIT] = 0; - noerrexit = NOERREXIT_EXIT | NOERREXIT_RETURN; + noerrexit |= NOERREXIT_EXIT | NOERREXIT_RETURN; if (ltype & Z_SIMPLE) /* skip the line number */ pc2++; pm = assignsparam("ZSH_DEBUG_CMD", @@ -1472,7 +1472,7 @@ execlist(Estate state, int dont_change_job, int exiting) next = state->pc + WC_SUBLIST_SKIP(code); /* suppress errexit for commands before && and || and after ! */ if (isandor || isnot) - noerrexit = NOERREXIT_EXIT | NOERREXIT_RETURN; + noerrexit |= NOERREXIT_EXIT | NOERREXIT_RETURN; switch (WC_SUBLIST_TYPE(code)) { case WC_SUBLIST_END: /* End of sublist; just execute, ignoring status. */ @@ -1568,7 +1568,7 @@ sublist_done: */ int oerrexit_opt = opts[ERREXIT]; opts[ERREXIT] = 0; - noerrexit = NOERREXIT_EXIT | NOERREXIT_RETURN; + noerrexit |= NOERREXIT_EXIT | NOERREXIT_RETURN; exiting = donetrap; ret = lastval; dotrap(SIGDEBUG); diff --git a/Src/loop.c b/Src/loop.c index 61543ed73..88c55dd1a 100644 --- a/Src/loop.c +++ b/Src/loop.c @@ -428,7 +428,7 @@ execwhile(Estate state, UNUSED(int do_exec)) } else { for (;;) { state->pc = loop; - noerrexit = NOERREXIT_EXIT | NOERREXIT_RETURN; + noerrexit |= NOERREXIT_EXIT | NOERREXIT_RETURN; /* In case the test condition is a functional no-op, * make sure signal handlers recognize ^C to end the loop. */ |