diff options
author | Barton E. Schaefer <schaefer@zsh.org> | 2015-08-10 12:54:05 -0700 |
---|---|---|
committer | Barton E. Schaefer <schaefer@zsh.org> | 2015-08-10 12:54:05 -0700 |
commit | 93ca77f8f73bc58041bcbf8e4319b056504806e5 (patch) | |
tree | 2bc582ae7d1c909377fad11ee0ab873ac97799bf /Src | |
parent | 6fa8708bfcc44f2efbf8a38169bf62301d98ef0c (diff) | |
download | zsh-93ca77f8f73bc58041bcbf8e4319b056504806e5.tar.gz zsh-93ca77f8f73bc58041bcbf8e4319b056504806e5.tar.xz zsh-93ca77f8f73bc58041bcbf8e4319b056504806e5.zip |
36079: do not allow update_job() and its helpers to run the signal queue while we are processing a job exit.
Diffstat (limited to 'Src')
-rw-r--r-- | Src/signals.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Src/signals.c b/Src/signals.c index 78dc75b1b..f45c1860c 100644 --- a/Src/signals.c +++ b/Src/signals.c @@ -487,6 +487,12 @@ wait_for_processes(void) break; } + /* This is necessary to be sure queueing_enabled > 0 when + * we enter printjob() from update_job(), so that we don't + * decrement to zero in should_report_time() and improperly + * run other handlers in the middle of processing this one */ + queue_signals(); + /* * Find the process and job containing this pid and * update it. @@ -536,6 +542,8 @@ wait_for_processes(void) WEXITSTATUS(status))); addbgstatus(pid, val); } + + unqueue_signals(); } } |