From 4b902b44a244e29106637f9777aa71b1cd4c22d2 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 22 Sep 2016 10:48:42 -0400 Subject: [PATCH] os: fix file descriptor leak in os_exec See #182 --- src/os.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/os.cpp b/src/os.cpp index 60e7faa423..272a55c336 100644 --- a/src/os.cpp +++ b/src/os.cpp @@ -263,6 +263,7 @@ static int os_exec_process_posix(const char *exe, ZigList &args, } else { // parent close(stdin_pipe[0]); + close(stdin_pipe[1]); close(stdout_pipe[1]); close(stderr_pipe[1]); @@ -270,8 +271,13 @@ static int os_exec_process_posix(const char *exe, ZigList &args, waitpid(pid, &status, 0); populate_termination(term, status); - os_fetch_file(fdopen(stdout_pipe[0], "rb"), out_stdout); - os_fetch_file(fdopen(stderr_pipe[0], "rb"), out_stderr); + FILE *stdout_f = fdopen(stdout_pipe[0], "rb"); + FILE *stderr_f = fdopen(stderr_pipe[0], "rb"); + os_fetch_file(stdout_f, out_stdout); + os_fetch_file(stderr_f, out_stderr); + + fclose(stdout_f); + fclose(stderr_f); return 0; }