SHA256
3
0
forked from pool/bash
bash/bash-4.2-sigrestart.patch
2011-03-08 12:18:13 +00:00

34 lines
1.0 KiB
Diff

--- jobs.c
+++ jobs.c 2008-01-08 18:10:16.000000000 +0000
@@ -2454,7 +2454,11 @@ wait_for (pid)
act.sa_handler = SIG_DFL;
sigemptyset (&act.sa_mask);
sigemptyset (&oact.sa_mask);
+# if defined(MUST_REINSTALL_SIGHANDLERS)
act.sa_flags = 0;
+# else
+ act.sa_flags = SA_RESTART;
+# endif
sigaction (SIGCHLD, &act, &oact);
# endif
queue_sigchld = 1;
--- sig.c
+++ sig.c 2011-01-14 13:10:48.591925968 +0000
@@ -668,6 +668,16 @@ set_signal_handler (sig, handler)
if we take the time to reap children */
if (sig == SIGCHLD)
act.sa_flags |= SA_RESTART; /* XXX */
+#if !defined(MUST_REINSTALL_SIGHANDLERS)
+ if (sig != SIGALRM)
+ act.sa_flags |= SA_RESTART; /* XXX */
+ if (handler == (trap_handler))
+ act.sa_flags |= SA_NODEFER; /* XXX */
+ if (handler == (termsig_sighandler))
+ act.sa_flags |= SA_NODEFER; /* XXX */
+ if (sig == SIGTSTP || sig == SIGTTOU || sig == SIGTTIN || sig == SIGCONT)
+ act.sa_flags |= SA_NODEFER; /* XXX */
+#endif
sigemptyset (&act.sa_mask);
sigemptyset (&oact.sa_mask);