Module: wine Branch: master Commit: ed8358393413d52096c56e96b44ee73f15053f91 URL: https://source.winehq.org/git/wine.git/?a=commit;h=ed8358393413d52096c56e96b...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Jul 30 17:16:42 2020 +0200
kernelbase: Use init_console_std_handles in AttachConsole.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernelbase/console.c | 9 +++------ include/wine/server_protocol.h | 6 +----- server/console.c | 14 -------------- server/protocol.def | 4 ---- server/request.h | 4 ---- server/trace.c | 9 +-------- 6 files changed, 5 insertions(+), 41 deletions(-)
diff --git a/dlls/kernelbase/console.c b/dlls/kernelbase/console.c index be05a535c5..93ab29d6f1 100644 --- a/dlls/kernelbase/console.c +++ b/dlls/kernelbase/console.c @@ -246,15 +246,12 @@ BOOL WINAPI DECLSPEC_HOTPATCH AttachConsole( DWORD pid ) SERVER_START_REQ( attach_console ) { req->pid = pid; - if ((ret = !wine_server_call_err( req ))) - { - SetStdHandle( STD_INPUT_HANDLE, wine_server_ptr_handle( reply->std_in )); - SetStdHandle( STD_OUTPUT_HANDLE, wine_server_ptr_handle( reply->std_out )); - SetStdHandle( STD_ERROR_HANDLE, wine_server_ptr_handle( reply->std_err )); - } + ret = !wine_server_call_err( req ); } SERVER_END_REQ;
+ if (ret && !(ret = init_console_std_handles())) FreeConsole(); + RtlLeaveCriticalSection( &console_section ); return ret; } diff --git a/include/wine/server_protocol.h b/include/wine/server_protocol.h index 7753d24877..587b2391ce 100644 --- a/include/wine/server_protocol.h +++ b/include/wine/server_protocol.h @@ -1858,10 +1858,6 @@ struct attach_console_request struct attach_console_reply { struct reply_header __header; - obj_handle_t std_in; - obj_handle_t std_out; - obj_handle_t std_err; - char __pad_20[4]; };
@@ -6355,7 +6351,7 @@ union generic_reply
/* ### protocol_version begin ### */
-#define SERVER_PROTOCOL_VERSION 633 +#define SERVER_PROTOCOL_VERSION 634
/* ### protocol_version end ### */
diff --git a/server/console.c b/server/console.c index 0060f7cb65..53910b3f46 100644 --- a/server/console.c +++ b/server/console.c @@ -2108,15 +2108,6 @@ DECL_HANDLER(attach_console)
if (process->console && process->console->active) { - reply->std_in = alloc_handle( current->process, process->console, GENERIC_READ, 0 ); - if (!reply->std_in) goto error; - - reply->std_out = alloc_handle( current->process, process->console->active, GENERIC_WRITE, 0 ); - if (!reply->std_out) goto error; - - reply->std_err = alloc_handle( current->process, process->console->active, GENERIC_WRITE, 0 ); - if (!reply->std_err) goto error; - current->process->console = (struct console_input *)grab_object( process->console ); current->process->console->num_proc++; } @@ -2127,11 +2118,6 @@ DECL_HANDLER(attach_console)
release_object( process ); return; - -error: - if (reply->std_in) close_handle( current->process, reply->std_in ); - if (reply->std_out) close_handle( current->process, reply->std_out ); - release_object( process ); }
/* set info about a console input */ diff --git a/server/protocol.def b/server/protocol.def index c2773307a4..1bbc8c5008 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -1475,10 +1475,6 @@ enum server_fd_type /* Attach to a other process's console */ @REQ(attach_console) process_id_t pid; /* pid of attached console process */ -@REPLY - obj_handle_t std_in; /* attached stdin */ - obj_handle_t std_out; /* attached stdout */ - obj_handle_t std_err; /* attached stderr */ @END
diff --git a/server/request.h b/server/request.h index 190581332b..cd0799f2c1 100644 --- a/server/request.h +++ b/server/request.h @@ -1112,10 +1112,6 @@ C_ASSERT( sizeof(struct alloc_console_reply) == 16 ); C_ASSERT( sizeof(struct free_console_request) == 16 ); C_ASSERT( FIELD_OFFSET(struct attach_console_request, pid) == 12 ); C_ASSERT( sizeof(struct attach_console_request) == 16 ); -C_ASSERT( FIELD_OFFSET(struct attach_console_reply, std_in) == 8 ); -C_ASSERT( FIELD_OFFSET(struct attach_console_reply, std_out) == 12 ); -C_ASSERT( FIELD_OFFSET(struct attach_console_reply, std_err) == 16 ); -C_ASSERT( sizeof(struct attach_console_reply) == 24 ); C_ASSERT( FIELD_OFFSET(struct get_console_wait_event_request, handle) == 12 ); C_ASSERT( sizeof(struct get_console_wait_event_request) == 16 ); C_ASSERT( FIELD_OFFSET(struct get_console_wait_event_reply, event) == 8 ); diff --git a/server/trace.c b/server/trace.c index 15a769fb59..51bd490fe2 100644 --- a/server/trace.c +++ b/server/trace.c @@ -2046,13 +2046,6 @@ static void dump_attach_console_request( const struct attach_console_request *re fprintf( stderr, " pid=%04x", req->pid ); }
-static void dump_attach_console_reply( const struct attach_console_reply *req ) -{ - fprintf( stderr, " std_in=%04x", req->std_in ); - fprintf( stderr, ", std_out=%04x", req->std_out ); - fprintf( stderr, ", std_err=%04x", req->std_err ); -} - static void dump_get_console_wait_event_request( const struct get_console_wait_event_request *req ) { fprintf( stderr, " handle=%04x", req->handle ); @@ -4793,7 +4786,7 @@ static const dump_func reply_dumpers[REQ_NB_REQUESTS] = { NULL, (dump_func)dump_alloc_console_reply, NULL, - (dump_func)dump_attach_console_reply, + NULL, (dump_func)dump_get_console_wait_event_reply, NULL, (dump_func)dump_get_console_input_info_reply,