about summary refs log tree commit diff
path: root/Src/signals.c
diff options
context:
space:
mode:
authorJun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>2022-06-03 19:32:56 +0900
committerJun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>2022-06-03 19:32:56 +0900
commit22b1a91c2a07e6d6a57975a1ab47d66f92aa21f2 (patch)
tree3c6a40302e7ba513f75aa10b918793d56abcf5f6 /Src/signals.c
parent8756cc6add3d27d05e869fc7317e3043ab2be5b2 (diff)
downloadzsh-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.c10
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();