From 8589e64954d911367c25dffc4f81e23aae51083b Mon Sep 17 00:00:00 2001 From: Arran Cudbard-Bell Date: Mon, 16 Nov 2015 15:57:57 -0500 Subject: [PATCH] fclose destroys file descriptor Closes #1390 --- src/lib/missing.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/lib/missing.c b/src/lib/missing.c index 5782bb7..fd3e636 100644 --- a/src/lib/missing.c +++ b/src/lib/missing.c @@ -196,12 +196,19 @@ int vdprintf (int fd, const char *format, va_list args) { int ret; FILE *fp; + int dup_fd; + + dup_fd = dup(fd); + if (dup_fd < 0) return -1; fp = fdopen(fd, "w"); - if (!fp) return -1; + if (!fp) { + close(dup_fd); + return -1; + } ret = vfprintf(fp, format, args); - fclose(fp); + fclose(fp); /* Also closes dup_fd */ return ret; } -- 2.1.4