From 0854ee56bc559d7fd614eb7d59b61da84a9ce51f Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Wed, 5 Oct 2016 13:52:31 +0100 Subject: 39568: "! " suppresses ERR_EXIT --- Src/exec.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'Src/exec.c') diff --git a/Src/exec.c b/Src/exec.c index f248ca288..741c80e30 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -1317,8 +1317,13 @@ execlist(Estate state, int dont_change_job, int exiting) next = state->pc + WC_SUBLIST_SKIP(code); if (!oldnoerrexit) noerrexit = !isend; - if ((WC_SUBLIST_FLAGS(code) & WC_SUBLIST_NOT) && isend) - this_noerrexit = 1; + if (WC_SUBLIST_FLAGS(code) & WC_SUBLIST_NOT) { + /* suppress errexit for "! this_command" */ + if (isend) + this_noerrexit = 1; + /* suppress errexit for ! */ + noerrexit = 1; + } switch (WC_SUBLIST_TYPE(code)) { case WC_SUBLIST_END: /* End of sublist; just execute, ignoring status. */ -- cgit 1.4.1