diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | Src/exec.c | 8 | ||||
-rw-r--r-- | Src/jobs.c | 6 |
3 files changed, 12 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog index 76a8091e3..fe10e2982 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2022-11-09 Bart Schaefer <schaefer@zsh.org> + + * 50922: Src/exec.c, Src/jobs.c: fix additional cases of signals + for current shell jobs on the right of a pipeline. Backs out + part of 50874. + 2022-11-08 Bart Schaefer <schaefer@zsh.org> * 50897: Src/exec.c, Src/loop.c: nonzero status of complex diff --git a/Src/exec.c b/Src/exec.c index 2422dae91..d4e681887 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -1899,8 +1899,12 @@ execpline(Estate state, wordcode slcode, int how, int last1) break; } } - else if (subsh && jn->stat & STAT_STOPPED) - thisjob = newjob; + else if (subsh && jn->stat & STAT_STOPPED) { + if (thisjob == newjob) + makerunning(jn); + else + thisjob = newjob; + } else break; } diff --git a/Src/jobs.c b/Src/jobs.c index 76c762ee5..4863962b9 100644 --- a/Src/jobs.c +++ b/Src/jobs.c @@ -564,12 +564,6 @@ update_job(Job jn) * when the job is finally deleted. */ jn->stat |= STAT_ATTACH; - /* - * If we're in shell jobs on the right side of a pipeline - * we should treat it like a job in the current shell. - */ - if (inforeground == 2) - inforeground = 1; } /* If we have `foo|while true; (( x++ )); done', and hit * ^C, we have to stop the loop, too. */ |