From 4faed406d428a2cec752c2aa1bda8449a1342057 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Fri, 14 Aug 2020 13:26:53 +0200 Subject: [PATCH] kernelbase: Use IOCTL_CONDRV_GET_INPUT_INFO in GetConsoleCP. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/kernel32/tests/console.c | 6 ++++++ dlls/kernelbase/console.c | 16 +++++----------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c index 2b70c2ffc4c..d3ce6fb21cb 100644 --- a/dlls/kernel32/tests/console.c +++ b/dlls/kernel32/tests/console.c @@ -3590,6 +3590,7 @@ static void test_GetConsoleScreenBufferInfoEx(HANDLE std_output) static void test_FreeConsole(void) { HANDLE handle; + UINT cp; BOOL ret; ok(RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle != NULL, "ConsoleHandle is NULL\n"); @@ -3626,6 +3627,11 @@ static void test_FreeConsole(void) ok(handle == INVALID_HANDLE_VALUE && GetLastError() == ERROR_INVALID_HANDLE, "CreateConsoleScreenBuffer returned: %p (%u)\n", handle, GetLastError()); + SetLastError(0xdeadbeef); + cp = GetConsoleCP(); + ok(!cp, "cp = %x\n", cp); + ok(GetLastError() == ERROR_INVALID_HANDLE, "last error %u\n", GetLastError()); + if (!skip_nt) { SetStdHandle( STD_INPUT_HANDLE, (HANDLE)0xdeadbeef ); diff --git a/dlls/kernelbase/console.c b/dlls/kernelbase/console.c index 484072e2520..94577a58062 100644 --- a/dlls/kernelbase/console.c +++ b/dlls/kernelbase/console.c @@ -585,18 +585,12 @@ BOOL WINAPI DECLSPEC_HOTPATCH GenerateConsoleCtrlEvent( DWORD event, DWORD group */ UINT WINAPI DECLSPEC_HOTPATCH GetConsoleCP(void) { - UINT codepage = GetOEMCP(); /* default value */ + struct condrv_input_info info; - SERVER_START_REQ( get_console_input_info ) - { - req->handle = 0; - if (!wine_server_call_err( req )) - { - if (reply->input_cp) codepage = reply->input_cp; - } - } - SERVER_END_REQ; - return codepage; + if (!console_ioctl( RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle, + IOCTL_CONDRV_GET_INPUT_INFO, NULL, 0, &info, sizeof(info), NULL )) + return 0; + return info.input_cp ? info.input_cp : GetOEMCP(); }