From 36f89ff1d8b761c815d8993e9833e6357a57fc6b Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Fri, 1 Jun 2018 10:20:32 -0400 Subject: [PATCH] SIGINT trap handler SIGINT loop fix --- jobs.c | 12 +++++++++++- patchlevel.h | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/jobs.c b/jobs.c index 2684632d..5ee21e10 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 4a65dc0f..d87b0ba7 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_ */ -- 2.14.4