Module: wine Branch: master Commit: c6e0cb6c720c56541ebb45a6b4821d46f0300f36 URL: https://source.winehq.org/git/wine.git/?a=commit;h=c6e0cb6c720c56541ebb45a6b...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Aug 17 15:07:21 2020 +0200
kernelbase: Use IOCTL_CONDRV_SET_INPUT_INFO in SetConsoleCP.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/kernel32/tests/console.c | 4 ++++ dlls/kernelbase/console.c | 15 +++++---------- 2 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c index 1702369d7a..38ec621da6 100644 --- a/dlls/kernel32/tests/console.c +++ b/dlls/kernel32/tests/console.c @@ -3640,6 +3640,10 @@ static void test_FreeConsole(void) ok(!cp, "cp = %x\n", cp); ok(GetLastError() == ERROR_INVALID_HANDLE, "last error %u\n", GetLastError());
+ SetLastError(0xdeadbeef); + ret = SetConsoleCP(GetOEMCP()); + ok(!ret && GetLastError() == ERROR_INVALID_HANDLE, "SetConsoleCP returned %x(%u)\n", ret, GetLastError()); + SetLastError(0xdeadbeef); memset( title, 0xc0, sizeof(title) ); size = GetConsoleTitleW( title, ARRAY_SIZE(title) ); diff --git a/dlls/kernelbase/console.c b/dlls/kernelbase/console.c index a3271712d9..536f1912e9 100644 --- a/dlls/kernelbase/console.c +++ b/dlls/kernelbase/console.c @@ -1043,22 +1043,17 @@ BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleActiveScreenBuffer( HANDLE handle ) */ BOOL WINAPI DECLSPEC_HOTPATCH SetConsoleCP( UINT cp ) { - BOOL ret; + struct condrv_input_info_params params = { SET_CONSOLE_INPUT_INFO_INPUT_CODEPAGE };
if (!IsValidCodePage( cp )) { SetLastError( ERROR_INVALID_PARAMETER ); return FALSE; } - SERVER_START_REQ( set_console_input_info ) - { - req->handle = 0; - req->mask = SET_CONSOLE_INPUT_INFO_INPUT_CODEPAGE; - req->input_cp = cp; - ret = !wine_server_call_err( req ); - } - SERVER_END_REQ; - return ret; + + params.info.input_cp = cp; + return console_ioctl( RtlGetCurrentPeb()->ProcessParameters->ConsoleHandle, + IOCTL_CONDRV_SET_INPUT_INFO, ¶ms, sizeof(params), NULL, 0, NULL ); }