mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-06-06 23:36:03 +02:00
27947: some cases where we should execute EXIT traps
This commit is contained in:
parent
b0aec8054c
commit
a6ea7ab36d
|
@ -1,3 +1,8 @@
|
|||
2010-05-05 Peter Stephenson <pws@csr.com>
|
||||
|
||||
* 27947: Src/exec.c, Test/C03traps.ztst: fix some cases where we
|
||||
should (probably) execute an EXIT trap but don't.
|
||||
|
||||
2010-05-02 Frank Terbeck <ft@bewatermyfriend.org>
|
||||
|
||||
* Simon Ruderich: 27813: Completion/Unix/Command/_git: Complete
|
||||
|
@ -13096,5 +13101,5 @@
|
|||
|
||||
*****************************************************
|
||||
* This is used by the shell to define $ZSH_PATCHLEVEL
|
||||
* $Revision: 1.4971 $
|
||||
* $Revision: 1.4972 $
|
||||
*****************************************************
|
||||
|
|
|
@ -1299,6 +1299,12 @@ sublist_done:
|
|||
lineno = oldlineno;
|
||||
if (dont_change_job)
|
||||
thisjob = cj;
|
||||
|
||||
if (exiting && sigtrapped[SIGEXIT]) {
|
||||
dotrap(SIGEXIT);
|
||||
/* Make sure this doesn't get executed again. */
|
||||
sigtrapped[SIGEXIT] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Execute a pipeline. *
|
||||
|
@ -1631,7 +1637,7 @@ execpline2(Estate state, wordcode pcode,
|
|||
entersubsh(((how & Z_ASYNC) ? ESUB_ASYNC : 0)
|
||||
| ESUB_PGRP | ESUB_KEEPTRAP);
|
||||
close(synch[1]);
|
||||
execcmd(state, input, pipes[1], how, 0);
|
||||
execcmd(state, input, pipes[1], how, 1);
|
||||
_exit(lastval);
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -350,6 +350,26 @@
|
|||
>trap
|
||||
>Working 0
|
||||
|
||||
{ trap 'echo This subshell is exiting' EXIT; } | cat
|
||||
0: EXIT trap set in current shell at left of pipeline
|
||||
>This subshell is exiting
|
||||
|
||||
( trap 'echo This subshell is also exiting' EXIT; ) | cat
|
||||
0: EXIT trap set in subshell at left of pipeline
|
||||
>This subshell is also exiting
|
||||
|
||||
( trap 'echo Should only appear once at the end' EXIT
|
||||
( : trap reset here ) | cat
|
||||
: trap not reset but not part of shell command list | cat
|
||||
echo nothing after this should appear $( : trap reset here too)
|
||||
)
|
||||
0: EXIT trap set in subshell reset in subsubshell
|
||||
>nothing after this should appear
|
||||
>Should only appear once at the end
|
||||
|
||||
echo $( trap 'echo command substitution exited' EXIT )
|
||||
0: EXIT trap set in command substitution
|
||||
>command substitution exited
|
||||
|
||||
%clean
|
||||
|
||||
|
|
Loading…
Reference in New Issue