From: Julian Brown Date: Sun, 17 May 2009 13:07:08 +0000 (+0000) Subject: pex-win32.c (pex_win32_exec_child): Fix logic to avoid closing standard handles ... X-Git-Tag: releases/gcc-4.5.0~5679 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=965cc3c3aad4e7b106debe7c3870ef1d537aad8f;p=thirdparty%2Fgcc.git pex-win32.c (pex_win32_exec_child): Fix logic to avoid closing standard handles (stdin, stdout, stderr) in parent. libiberty/ * pex-win32.c (pex_win32_exec_child): Fix logic to avoid closing standard handles (stdin, stdout, stderr) in parent. From-SVN: r147634 --- diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 13c7fd5dd1f3..75e76d679d6a 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,8 @@ +2009-05-17 Julian Brown + + * pex-win32.c (pex_win32_exec_child): Fix logic to avoid closing + standard handles (stdin, stdout, stderr) in parent. + 2009-04-29 Julian Brown * pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT. diff --git a/libiberty/pex-win32.c b/libiberty/pex-win32.c index 30ef43592003..91e0bc882ff1 100644 --- a/libiberty/pex-win32.c +++ b/libiberty/pex-win32.c @@ -753,17 +753,20 @@ pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags, original descriptors. */ orig_in = in; in = _dup (orig_in); - _close (orig_in); + if (orig_in != STDIN_FILENO) + _close (orig_in); orig_out = out; out = _dup (orig_out); - _close (orig_out); + if (orig_out != STDOUT_FILENO) + _close (orig_out); if (separate_stderr) { orig_err = errdes; errdes = _dup (orig_err); - _close (orig_err); + if (orig_err != STDERR_FILENO) + _close (orig_err); } stdin_handle = INVALID_HANDLE_VALUE; @@ -844,11 +847,9 @@ pex_win32_exec_child (struct pex_obj *obj ATTRIBUTE_UNUSED, int flags, /* Close the standard input, standard output and standard error handles in the parent. */ - if (in != STDIN_FILENO) - _close (in); - if (out != STDOUT_FILENO) - _close (out); - if (errdes != STDERR_FILENO) + _close (in); + _close (out); + if (separate_stderr) _close (errdes); return pid;