diff options
author | Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp> | 2022-06-03 19:32:56 +0900 |
---|---|---|
committer | Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp> | 2022-06-03 19:32:56 +0900 |
commit | 22b1a91c2a07e6d6a57975a1ab47d66f92aa21f2 (patch) | |
tree | 3c6a40302e7ba513f75aa10b918793d56abcf5f6 /Src/signals.c | |
parent | 8756cc6add3d27d05e869fc7317e3043ab2be5b2 (diff) | |
download | zsh-22b1a91c2a07e6d6a57975a1ab47d66f92aa21f2.tar.gz zsh-22b1a91c2a07e6d6a57975a1ab47d66f92aa21f2.tar.xz zsh-22b1a91c2a07e6d6a57975a1ab47d66f92aa21f2.zip |
50306: fix wait for child that was stopped/continued
do not call addbgstatus() when child is stopped/continued
Diffstat (limited to 'Src/signals.c')
-rw-r--r-- | Src/signals.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/Src/signals.c b/Src/signals.c index 5c787e2a8..a61368554 100644 --- a/Src/signals.c +++ b/Src/signals.c @@ -576,12 +576,10 @@ wait_for_processes(void) */ if (jn && !(jn->stat & (STAT_CURSH|STAT_BUILTIN)) && jn - jobtab != thisjob) { - int val = (WIFSIGNALED(status) ? - 0200 | WTERMSIG(status) : - (WIFSTOPPED(status) ? - 0200 | WEXITSTATUS(status) : - WEXITSTATUS(status))); - addbgstatus(pid, val); + if (WIFEXITED(status)) + addbgstatus(pid, WEXITSTATUS(status)); + else if (WIFSIGNALED(status)) + addbgstatus(pid, 0200 | WTERMSIG(status)); } unqueue_signals(); |