Module: wine Branch: master Commit: 4faed406d428a2cec752c2aa1bda8449a1342057 URL: https://source.winehq.org/git/wine.git/?a=commit;h=4faed406d428a2cec752c2aa1...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Aug 14 13:26:53 2020 +0200
kernelbase: Use IOCTL_CONDRV_GET_INPUT_INFO in GetConsoleCP.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
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 2b70c2ffc4..d3ce6fb21c 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 484072e252..94577a5806 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(); }