mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-07-11 16:51:26 +02:00
52309: fix cases that hang with all signals blocked.
* no job control inside <<(substition) * allow interrupt of multios reading from a terminal
This commit is contained in:
parent
0840f34e1f
commit
ddfc81a2b8
2 changed files with 6 additions and 2 deletions
|
@ -1,5 +1,9 @@
|
|||
2023-11-15 Bart Schaefer <schaefer@zsh.org>
|
||||
|
||||
* 52309: Src/exec.c: suppress job control inside <<(substition)
|
||||
to fix cases that hang with all signals blocked. Similarly,
|
||||
allow interrupt of multios reading from a terminal.
|
||||
|
||||
* 52308: Etc/FAQ.yo: mention new features, fix some old answers
|
||||
|
||||
* 52275: Src/compat.c: rationality in zgetdir() and zgetcwd() to
|
||||
|
|
|
@ -2309,7 +2309,7 @@ closemn(struct multio **mfds, int fd, int type)
|
|||
for (i = 0; i < mn->ct; i++)
|
||||
while ((len = read(mn->fds[i], buf, TCBUFSIZE)) != 0) {
|
||||
if (len < 0) {
|
||||
if (errno == EINTR)
|
||||
if (errno == EINTR && !isatty(mn->fds[i]))
|
||||
continue;
|
||||
else
|
||||
break;
|
||||
|
@ -5096,7 +5096,7 @@ getpipe(char *cmd, int nullexec)
|
|||
procsubstpid = pid;
|
||||
return pipes[!out];
|
||||
}
|
||||
entersubsh(ESUB_ASYNC|ESUB_PGRP, NULL);
|
||||
entersubsh(ESUB_ASYNC|ESUB_PGRP|ESUB_NOMONITOR, NULL);
|
||||
redup(pipes[out], out);
|
||||
closem(FDT_UNUSED, 0); /* this closes pipes[!out] as well */
|
||||
cmdpush(CS_CMDSUBST);
|
||||
|
|
Loading…
Reference in a new issue