summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Src/exec.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index f47690476..41204dfd6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2024-08-04 Bart Schaefer <schaefer@zsh.org>
+
+ * Philippe Altherr: 53005: Src/exec.c: off-by-one error when
+ resetting signals on subshell entrance
+
2024-08-03 Eric Cook <llua@gmx.com>
* 52989: Completion/Unix/Command/_rsync,
diff --git a/Src/exec.c b/Src/exec.c
index 097e0b368..00278ac50 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -1089,7 +1089,7 @@ entersubsh(int flags, struct entersubsh_ret *retp)
int i, sig, monitor, job_control_ok;
if (!(flags & ESUB_KEEPTRAP))
- for (sig = 0; sig < SIGCOUNT; sig++)
+ for (sig = 0; sig <= SIGCOUNT; sig++)
if (!(sigtrapped[sig] & ZSIG_FUNC) &&
!(isset(POSIXTRAPS) && (sigtrapped[sig] & ZSIG_IGNORED)))
unsettrap(sig);
@@ -1203,7 +1203,7 @@ entersubsh(int flags, struct entersubsh_ret *retp)
* Start loop at 1 because 0 is SIGEXIT
*/
if (intrap)
- for (sig = 1; sig < SIGCOUNT; sig++)
+ for (sig = 1; sig <= SIGCOUNT; sig++)
if (sigtrapped[sig] && sigtrapped[sig] != ZSIG_IGNORED)
signal_unblock(signal_mask(sig));
if (!job_control_ok)