* dtable.cc (dtable::stdio_init): Use GetCurrentProcess() rather than

hMainProc as process handle when duplicating the stdout handle.
	Explain why.  Add Win32 error code to debug output.
This commit is contained in:
Corinna Vinschen 2009-11-26 10:58:06 +00:00
parent b2225216e9
commit 7bdbf062cd
2 changed files with 13 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2009-11-26 Corinna Vinschen <corinna@vinschen.de>
* dtable.cc (dtable::stdio_init): Use GetCurrentProcess() rather than
hMainProc as process handle when duplicating the stdout handle.
Explain why. Add Win32 error code to debug output.
2009-11-23 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::fixup_before_fork_exec): Add

View File

@ -177,12 +177,16 @@ dtable::stdio_init ()
{
/* Since this code is not invoked for forked tasks, we don't have
to worry about the close-on-exec flag here. */
if (!DuplicateHandle (hMainProc, out, hMainProc, &err, 0, true,
DUPLICATE_SAME_ACCESS))
/* CV 2009-11-26: Using hMainProc results in ERROR_INVALID_PARAMETER
when trying to duplicate a console handle. It only works using
the GetCurrentProcess () pseudo handle for some unknown reason. */
if (!DuplicateHandle (GetCurrentProcess (), out,
GetCurrentProcess (), &err,
0, TRUE, DUPLICATE_SAME_ACCESS))
{
/* If that fails, do this as a fall back. */
err = out;
system_printf ("couldn't make stderr distinct from stdout");
system_printf ("couldn't make stderr distinct from stdout, %E");
}
}