Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [BUG] ignored trap and subshell



> On 24 August 2021 at 17:23 Vincent Lefevre <vincent@xxxxxxxxxx> wrote:
> The zshmisc(1) man page says:
> 
>     ( list )
>         Execute list in a subshell.  Traps set by the trap builtin are
>         reset to their default values while executing list.
> 
> However, with "emulate sh", ignored traps should still be ignored
> in the subshell according to POSIX, and zsh 5.8 fails do conform:

I think this is straightforward.  POSIXTRAPS is clearly the option for the job.

pws

diff --git a/Src/exec.c b/Src/exec.c
index 49ff88b80..79d8064b6 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -1033,7 +1033,8 @@ entersubsh(int flags, struct entersubsh_ret *retp)
 
     if (!(flags & ESUB_KEEPTRAP))
 	for (sig = 0; sig < SIGCOUNT; sig++)
-	    if (!(sigtrapped[sig] & ZSIG_FUNC))
+	    if (!(sigtrapped[sig] & ZSIG_FUNC) &&
+		!(isset(POSIXTRAPS) && (sigtrapped[sig] & ZSIG_IGNORED)))
 		unsettrap(sig);
     monitor = isset(MONITOR);
     job_control_ok = monitor && (flags & ESUB_JOB_CONTROL) && isset(POSIXJOBS);




Messages sorted by: Reverse Date, Date, Thread, Author