From f21088bdc23d0195b3396b96c3b4d3b1a2d4b255 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 8 Sep 2015 19:55:47 -0700 Subject: linenoise: stdin fd closed bug in !isatty case. * linenoise/linenoise.c (linenoise): Of course, we must up ls->ifd and fdopen the dup, because fdopen closes the descriptor. --- linenoise/linenoise.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'linenoise') diff --git a/linenoise/linenoise.c b/linenoise/linenoise.c index cdb21087..bc27e0c5 100644 --- a/linenoise/linenoise.c +++ b/linenoise/linenoise.c @@ -945,10 +945,13 @@ char *linenoise(lino_t *ls, const char *prompt) int count; if (!isatty(ls->ifd)) { - FILE *fi = fdopen(ls->ifd, "r"); + int fd = dup(ls->ifd); + FILE *fi = (fd > 0) ? fdopen(fd, "r") : 0; if (!fi) { ls->error = lino_error; + if (fd > 0) + close(fd); return 0; } -- cgit v1.2.3