|
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 |
|