about summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorBart Schaefer <schaefer@zsh.org>2022-11-06 11:25:47 -0800
committerBart Schaefer <schaefer@zsh.org>2022-11-06 11:25:47 -0800
commit188c5cd518b512073d3fd1dbf09c91b7968efcaa (patch)
tree687a4b83ae3de16f1a9fbfb48b7b8b19a3ff1852 /ChangeLog
parentf8d93888a8efd6c8142e74ece83b38632661de47 (diff)
downloadzsh-188c5cd518b512073d3fd1dbf09c91b7968efcaa.tar.gz
zsh-188c5cd518b512073d3fd1dbf09c91b7968efcaa.tar.xz
zsh-188c5cd518b512073d3fd1dbf09c91b7968efcaa.zip
50874: fix handling of tty signals for jobs in the current shell when waiting for the right side of a pipeline.
Reverts 15bf8ace (workers/50134).  Thanks to Jun T. for debugging assistance.

Issues came down to two things:
1. update_job() may be called on a process group leader even when a
   signal was NOT sent to any process in that process group.  This
   caused jobs to be resumed or backgrounded incorrectly or in the
   wrong order.
2. When there is a current-shell complex command (in braces) on the
   right side of a pipeline, external processes within it have their
   own process groups, but a tty signal sent to such a process should
   be treated as if received by the whole complex command.

This fixes:
* Suspend/resume of a foreground pipeline within a shell function
* Interrupt or suspend/resume of processes in a pipeline ending in { ... }
* Interrupt of such a pipeline after exit of the last process in { ... }

These affected interactive shells only (MONITOR set plus tty signals).
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog5
1 files changed, 5 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 6146209cf..7016ca76e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2022-11-06  Bart Schaefer  <schaefer@zsh.org>
+
+	* 50874: Src/jobs.c: fix handling of tty signals for jobs in
+	the current shell when waiting for the right side of a pipeline.
+
 2022-11-02  Jun-ichi Takimoto  <takimoto-j@kba.biglobe.ne.jp>
 
 	* 50851: Doc/Zsh/options.yo, Src/exec.c, Src/options.c: restore