From: Chet Ramey Date: Fri, 1 Jun 2018 14:20:32 +0000 (-0400) Subject: SIGINT trap handler SIGINT loop fix X-Git-Tag: bash-5.0~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=36f89ff1d8b761c815d8993e9833e6357a57fc6b;p=thirdparty%2Fbash.git SIGINT trap handler SIGINT loop fix --- diff --git a/jobs.c b/jobs.c index 2684632df..5ee21e103 100644 --- a/jobs.c +++ b/jobs.c @@ -2689,7 +2689,17 @@ wait_for (pid) wait_sigint_received = child_caught_sigint = 0; if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB)) { - old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); + SigHandler *temp_sigint_handler; + + temp_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler); + if (temp_sigint_handler == wait_sigint_handler) + { +#if defined (DEBUG) + internal_warning ("wait_for: recursively setting old_sigint_handler to wait_sigint_handler: running_trap = %d", running_trap); +#endif + } + else + old_sigint_handler = temp_sigint_handler; waiting_for_child = 0; if (old_sigint_handler == SIG_IGN) set_signal_handler (SIGINT, old_sigint_handler); diff --git a/patchlevel.h b/patchlevel.h index 4a65dc0ff..d87b0ba71 100644 --- a/patchlevel.h +++ b/patchlevel.h @@ -25,6 +25,6 @@ regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh looks for to find the patch level (for the sccs version string). */ -#define PATCHLEVEL 20 +#define PATCHLEVEL 21 #endif /* _PATCHLEVEL_H_ */