mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-15 09:52:19 +00:00
kernelbase: Duplicate input and output handles to ensure that they are inheritable.
Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
f3b8ccb2f7
commit
0e3edfd942
|
@ -1732,6 +1732,7 @@ HRESULT WINAPI CreatePseudoConsole( COORD size, HANDLE input, HANDLE output, DWO
|
|||
{
|
||||
SECURITY_ATTRIBUTES inherit_attr = { sizeof(inherit_attr), NULL, TRUE };
|
||||
struct pseudo_console *pseudo_console;
|
||||
HANDLE tty_input = NULL, tty_output;
|
||||
HANDLE signal = NULL;
|
||||
WCHAR pipe_name[64];
|
||||
|
||||
|
@ -1751,9 +1752,15 @@ HRESULT WINAPI CreatePseudoConsole( COORD size, HANDLE input, HANDLE output, DWO
|
|||
return HRESULT_FROM_WIN32( GetLastError() );
|
||||
}
|
||||
pseudo_console->signal = CreateFileW( pipe_name, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL );
|
||||
if (pseudo_console->signal != INVALID_HANDLE_VALUE)
|
||||
pseudo_console->reference = create_pseudo_console( size, input, output, signal, flags,
|
||||
if (pseudo_console->signal != INVALID_HANDLE_VALUE &&
|
||||
DuplicateHandle( GetCurrentProcess(), input, GetCurrentProcess(), &tty_input, 0, TRUE, DUPLICATE_SAME_ACCESS) &&
|
||||
DuplicateHandle( GetCurrentProcess(), output, GetCurrentProcess(), &tty_output, 0, TRUE, DUPLICATE_SAME_ACCESS))
|
||||
{
|
||||
pseudo_console->reference = create_pseudo_console( size, tty_input, tty_output, signal, flags,
|
||||
&pseudo_console->process );
|
||||
NtClose( tty_output );
|
||||
}
|
||||
NtClose( tty_input );
|
||||
NtClose( signal );
|
||||
if (!pseudo_console->reference)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue