Siteshwar Vashisht 009518
From 36f89ff1d8b761c815d8993e9833e6357a57fc6b Mon Sep 17 00:00:00 2001
Siteshwar Vashisht 009518
From: Chet Ramey <chet.ramey@case.edu>
Siteshwar Vashisht 009518
Date: Fri, 1 Jun 2018 10:20:32 -0400
Siteshwar Vashisht 009518
Subject: [PATCH] SIGINT trap handler SIGINT loop fix
Siteshwar Vashisht 009518
Siteshwar Vashisht 009518
---
Siteshwar Vashisht 009518
 jobs.c       | 12 +++++++++++-
Siteshwar Vashisht 009518
 patchlevel.h |  2 +-
Siteshwar Vashisht 009518
 2 files changed, 12 insertions(+), 2 deletions(-)
Siteshwar Vashisht 009518
Siteshwar Vashisht 009518
diff --git a/jobs.c b/jobs.c
Siteshwar Vashisht 009518
index 2684632d..5ee21e10 100644
Siteshwar Vashisht 009518
--- a/jobs.c
Siteshwar Vashisht 009518
+++ b/jobs.c
Siteshwar Vashisht 009518
@@ -2689,7 +2689,17 @@ wait_for (pid)
Siteshwar Vashisht 009518
   wait_sigint_received = child_caught_sigint = 0;
Siteshwar Vashisht 009518
   if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB))
Siteshwar Vashisht 009518
     {
Siteshwar Vashisht 009518
-      old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
Siteshwar Vashisht 009518
+      SigHandler *temp_sigint_handler;
Siteshwar Vashisht 009518
+
Siteshwar Vashisht 009518
+      temp_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
Siteshwar Vashisht 009518
+      if (temp_sigint_handler == wait_sigint_handler)
Siteshwar Vashisht 009518
+        {
Siteshwar Vashisht 009518
+#if defined (DEBUG)
Siteshwar Vashisht 009518
+	  internal_warning ("wait_for: recursively setting old_sigint_handler to wait_sigint_handler: running_trap = %d", running_trap);
Siteshwar Vashisht 009518
+#endif
Siteshwar Vashisht 009518
+        }
Siteshwar Vashisht 009518
+      else
Siteshwar Vashisht 009518
+	old_sigint_handler = temp_sigint_handler;
Siteshwar Vashisht 009518
       waiting_for_child = 0;
Siteshwar Vashisht 009518
       if (old_sigint_handler == SIG_IGN)
Siteshwar Vashisht 009518
 	set_signal_handler (SIGINT, old_sigint_handler);
Siteshwar Vashisht 009518
diff --git a/patchlevel.h b/patchlevel.h
Siteshwar Vashisht 009518
index 4a65dc0f..d87b0ba7 100644
Siteshwar Vashisht 009518
--- a/patchlevel.h
Siteshwar Vashisht 009518
+++ b/patchlevel.h
Siteshwar Vashisht 009518
@@ -25,6 +25,6 @@
Siteshwar Vashisht 009518
    regexp `^#define[ 	]*PATCHLEVEL', since that's what support/mkversion.sh
Siteshwar Vashisht 009518
    looks for to find the patch level (for the sccs version string). */
Siteshwar Vashisht 009518
 
Siteshwar Vashisht 009518
-#define PATCHLEVEL 20
Siteshwar Vashisht 009518
+#define PATCHLEVEL 21
Siteshwar Vashisht 009518
 
Siteshwar Vashisht 009518
 #endif /* _PATCHLEVEL_H_ */
Siteshwar Vashisht 009518
-- 
Siteshwar Vashisht 009518
2.14.4
Siteshwar Vashisht 009518