From feae6af6d2429afdfd8b2048f7a80b716840cffe Mon Sep 17 00:00:00 2001 From: Jun T Date: Mon, 16 Dec 2013 22:15:08 -0800 Subject: 32131: avoid infinite loop reading pty on platforms that do not buffer output after child exit --- ChangeLog | 6 ++++++ Src/Modules/zpty.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index a1085bd23..8a72064bf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -11,6 +11,12 @@ allows you to make the right prompt flush if your terminal supports it. +2013-12-16 Barton E. Schaefer + + * Jun Takimoto + Bart: 32131: Src/Modules/zpty.c: avoid infinite + loop reading pseudo-terminal on platforms that do not buffer pty + contents after child process exits + 2013-12-15 Barton E. Schaefer * users/18219: Completion/Zsh/Type/_command_names: compadd -Q for diff --git a/Src/Modules/zpty.c b/Src/Modules/zpty.c index fca0cc172..d119658c3 100644 --- a/Src/Modules/zpty.c +++ b/Src/Modules/zpty.c @@ -510,14 +510,14 @@ checkptycmd(Ptycmd cmd) if (cmd->read != -1 || cmd->fin) return; - if ((r = read(cmd->fd, &c, 1)) < 0) { + if ((r = read(cmd->fd, &c, 1)) <= 0) { if (kill(cmd->pid, 0) < 0) { cmd->fin = 1; zclose(cmd->fd); } return; } - if (r) cmd->read = (int) c; + cmd->read = (int) c; } static int -- cgit 1.4.1