summaryrefslogtreecommitdiff
path: root/libiberty
diff options
context:
space:
mode:
authorjules <jules@138bc75d-0d04-0410-961f-82ee72b054a4>2009-05-17 13:07:08 +0000
committerjules <jules@138bc75d-0d04-0410-961f-82ee72b054a4>2009-05-17 13:07:08 +0000
commit78e920c6baa0840a0aff398713722a3ffc953fdc (patch)
tree0b1606a2283a47163027424a2761a95097946f1f /libiberty
parent2cd8ef8bf262fd1982a8c83095f9a8c13191b519 (diff)
downloadgcc-78e920c6baa0840a0aff398713722a3ffc953fdc.tar.gz
libiberty/
* pex-win32.c (pex_win32_exec_child): Fix logic to avoid closing standard handles (stdin, stdout, stderr) in parent. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147634 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libiberty')
-rw-r--r--libiberty/ChangeLog5
-rw-r--r--libiberty/pex-win32.c17
2 files changed, 14 insertions, 8 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 13c7fd5dd1f..75e76d679d6 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,8 @@
+2009-05-17 Julian Brown <julian@codesourcery.com>
+
+ * pex-win32.c (pex_win32_exec_child): Fix logic to avoid closing
+ standard handles (stdin, stdout, stderr) in parent.
+
2009-04-29 Julian Brown <julian@codesourcery.com>
* pex-win32.c (pex_win32_pipe): Add _O_NOINHERIT.
diff --git a/libiberty/pex-win32.c b/libiberty/pex-win32.c
index 30ef4359200..91e0bc882ff 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;