From 8086f106159c2e9fc562b5ce88b8aefdb5fe5d23 Mon Sep 17 00:00:00 2001 From: Philippe Altherr Date: Sat, 3 Dec 2022 21:46:42 -0800 Subject: 51094: consistent use of bit-manipulation for noerrexit value changes --- ChangeLog | 3 +++ Src/exec.c | 6 +++--- 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 + * 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. */ -- cgit 1.4.1