* dtable.cc (dtable::get_debugger_info): Call SetStdHandle
for the newly opened handle. Explain why. (dtable::stdio_init): Don't duplicate standard error handle when stderr has already been created under debugger control.
This commit is contained in:
parent
5d2b3a0a5a
commit
edf5a5bd15
@ -1,3 +1,10 @@
|
|||||||
|
2008-10-17 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* dtable.cc (dtable::get_debugger_info): Call SetStdHandle
|
||||||
|
for the newly opened handle. Explain why.
|
||||||
|
(dtable::stdio_init): Don't duplicate standard error handle
|
||||||
|
when stderr has already been created under debugger control.
|
||||||
|
|
||||||
2008-10-13 Corinna Vinschen <corinna@vinschen.de>
|
2008-10-13 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* sec_acl.cc (setacl): Align standard owner and group permissions
|
* sec_acl.cc (setacl): Align standard owner and group permissions
|
||||||
|
@ -128,6 +128,11 @@ dtable::get_debugger_info ()
|
|||||||
release (i);
|
release (i);
|
||||||
else
|
else
|
||||||
CloseHandle (h);
|
CloseHandle (h);
|
||||||
|
/* Copy to Windows' idea of a standard handle, otherwise
|
||||||
|
we have invalid standard handles when calling Windows
|
||||||
|
functions (small_printf and strace might suffer, too). */
|
||||||
|
SetStdHandle (std_consts[i], i ? fh->get_output_handle ()
|
||||||
|
: fh->get_handle ());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -161,7 +166,11 @@ dtable::stdio_init ()
|
|||||||
/* STD_ERROR_HANDLE has been observed to be the same as
|
/* STD_ERROR_HANDLE has been observed to be the same as
|
||||||
STD_OUTPUT_HANDLE. We need separate handles (e.g. using pipes
|
STD_OUTPUT_HANDLE. We need separate handles (e.g. using pipes
|
||||||
to pass data from child to parent). */
|
to pass data from child to parent). */
|
||||||
if (out == err)
|
/* CV 2008-10-17: Under debugger control, std fd's have been potentially
|
||||||
|
initialized in dtable::get_debugger_info (). In this case
|
||||||
|
init_std_file_from_handle is a no-op, so, even if out == err we don't
|
||||||
|
want to duplicate the handle since it will be unused. */
|
||||||
|
if (out == err && (!being_debugged () || !not_open (2)))
|
||||||
{
|
{
|
||||||
/* Since this code is not invoked for forked tasks, we don't have
|
/* Since this code is not invoked for forked tasks, we don't have
|
||||||
to worry about the close-on-exec flag here. */
|
to worry about the close-on-exec flag here. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user