mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-05-27 18:36:05 +02:00
22281: wait shouldn't return immediately on signal unless trapped
This commit is contained in:
parent
56e1904e45
commit
845faf5586
|
@ -1,5 +1,8 @@
|
|||
2008-03-25 Peter Stephenson <p.w.stephenson@ntlworld.com>
|
||||
|
||||
* 24733: Src/jobs.c: wait shouldn't return immediately on
|
||||
a signal unless it's trapped (bug in 22281).
|
||||
|
||||
* 24732: Src/Builtins/sched.c: not enough space for ztrftime
|
||||
string with multibyte characters.
|
||||
|
||||
|
|
|
@ -1170,7 +1170,8 @@ waitforpid(pid_t pid, int wait_cmd)
|
|||
|
||||
last_signal = -1;
|
||||
signal_suspend(SIGCHLD);
|
||||
if (last_signal != SIGCHLD && wait_cmd) {
|
||||
if (last_signal != SIGCHLD && wait_cmd && last_signal >= 0 &&
|
||||
(sigtrapped[last_signal] & ZSIG_TRAPPED)) {
|
||||
/* wait command interrupted, but no error: return */
|
||||
restore_queue_signals(q);
|
||||
return 128 + last_signal;
|
||||
|
@ -1208,7 +1209,8 @@ zwaitjob(int job, int wait_cmd)
|
|||
!(jn->stat & STAT_DONE) &&
|
||||
!(interact && (jn->stat & STAT_STOPPED))) {
|
||||
signal_suspend(SIGCHLD);
|
||||
if (last_signal != SIGCHLD && wait_cmd)
|
||||
if (last_signal != SIGCHLD && wait_cmd && last_signal >= 0 &&
|
||||
(sigtrapped[last_signal] & ZSIG_TRAPPED))
|
||||
{
|
||||
/* builtin wait interrupted by trapped signal */
|
||||
restore_queue_signals(q);
|
||||
|
|
Loading…
Reference in New Issue