about summary refs log tree commit diff
path: root/Src/jobs.c
diff options
context:
space:
mode:
authorBarton E. Schaefer <schaefer@zsh.org>2015-08-11 08:53:12 -0700
committerBarton E. Schaefer <schaefer@zsh.org>2015-08-11 08:55:23 -0700
commit128bf385b1e8256e412d732fa9b80ecd7c5e2c73 (patch)
treef1404739219127f9ef6a80473bcb810fd4374dcc /Src/jobs.c
parenta01f29c11de0df084a9a1e6b932b2937936d2119 (diff)
downloadzsh-128bf385b1e8256e412d732fa9b80ecd7c5e2c73.tar.gz
zsh-128bf385b1e8256e412d732fa9b80ecd7c5e2c73.tar.xz
zsh-128bf385b1e8256e412d732fa9b80ecd7c5e2c73.zip
36104: change order of child_block() and dont_queue_signals() to resolve yet another race condition
Diffstat (limited to 'Src/jobs.c')
-rw-r--r--Src/jobs.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/Src/jobs.c b/Src/jobs.c
index 933348851..ed647b87e 100644
--- a/Src/jobs.c
+++ b/Src/jobs.c
@@ -1420,9 +1420,9 @@ zwaitjob(int job, int wait_cmd)
     int q = queue_signal_level();
     Job jn = jobtab + job;
 
-    dont_queue_signals();
     child_block();		 /* unblocked during signal_suspend() */
     queue_traps(wait_cmd);
+    dont_queue_signals();
     if (jn->procs || jn->auxprocs) { /* if any forks were done         */
 	jn->stat |= STAT_LOCKED;
 	if (jn->stat & STAT_CHANGED)
@@ -1478,9 +1478,9 @@ zwaitjob(int job, int wait_cmd)
 	pipestats[0] = lastval;
 	numpipestats = 1;
     }
+    restore_queue_signals(q);
     unqueue_traps();
     child_unblock();
-    restore_queue_signals(q);
 
     return 0;
 }