diff options
-rw-r--r-- | linenoise/linenoise.c | 5 |
1 files changed, 4 insertions, 1 deletions
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; } |