diff options
author | Peter Stephenson <p.w.stephenson@ntlworld.com> | 2018-09-16 19:13:38 +0100 |
---|---|---|
committer | Peter Stephenson <p.w.stephenson@ntlworld.com> | 2018-09-16 19:13:38 +0100 |
commit | 551ff842721d6ca83727dbe6cd40178f46cc8201 (patch) | |
tree | 88fcee0886f87535240a527de45c41fc99de6662 /Src/signals.c | |
parent | 301ca1229a6ca967f8bd7d3c379ff6b9983a3673 (diff) | |
download | zsh-551ff842721d6ca83727dbe6cd40178f46cc8201.tar.gz zsh-551ff842721d6ca83727dbe6cd40178f46cc8201.tar.xz zsh-551ff842721d6ca83727dbe6cd40178f46cc8201.zip |
43464: Another attachtty() fix.
If list_pipe_job triggered more than once we need to know the most recent process group leader, so record that both if the attach happened in the main shell on in entersubsh(). Also don't pass back proocess group for ESUB_ASYNC subshells.
Diffstat (limited to 'Src/signals.c')
-rw-r--r-- | Src/signals.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Src/signals.c b/Src/signals.c index 99aad0fab..26d88abc2 100644 --- a/Src/signals.c +++ b/Src/signals.c @@ -540,8 +540,8 @@ wait_for_processes(void) if (WIFEXITED(status) && pn->pid == jn->gleader && killpg(pn->pid, 0) == -1) { - jn->gleader = 0; - if (!(jn->stat & STAT_NOSTTY)) { + if (last_attached_pgrp == jn->gleader && + !(jn->stat & STAT_NOSTTY)) { /* * This PID was in control of the terminal; * reclaim terminal now it has exited. @@ -552,6 +552,7 @@ wait_for_processes(void) attachtty(mypgrp); adjustwinsize(0); } + jn->gleader = 0; } } update_job(jn); |