aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell/ash.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/shell/ash.c b/shell/ash.c
index 11ba9774a..b50e0952e 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -3491,13 +3491,18 @@ setsignal(int signo)
switch (new_act) {
case S_CATCH:
act.sa_handler = signal_handler;
- act.sa_flags = 0; /* matters only if !DFL and !IGN */
- sigfillset(&act.sa_mask); /* ditto */
break;
case S_IGN:
act.sa_handler = SIG_IGN;
break;
}
+
+ /* flags and mask matter only if !DFL and !IGN, but we do it
+ * for all cases for more deterministic behavior:
+ */
+ act.sa_flags = 0;
+ sigfillset(&act.sa_mask);
+
sigaction_set(signo, &act);
*t = new_act;