diff options
Diffstat (limited to 'Src/input.c')
-rw-r--r-- | Src/input.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Src/input.c b/Src/input.c index 5cff22da4..4ac7e6ec8 100644 --- a/Src/input.c +++ b/Src/input.c @@ -142,12 +142,14 @@ shingetline(void) char *p; p = buf; + winch_unblock(); for (;;) { do { errno = 0; c = fgetc(bshin); } while (c < 0 && errno == EINTR); if (c < 0 || c == '\n') { + winch_block(); if (c == '\n') *p++ = '\n'; if (p > buf) { @@ -163,11 +165,13 @@ shingetline(void) } else *p++ = c; if (p >= buf + BUFSIZ - 1) { + winch_block(); line = zrealloc(line, ll + (p - buf) + 1); memcpy(line + ll, buf, p - buf); ll += p - buf; line[ll] = '\0'; p = buf; + winch_unblock(); } } } |