Jacek Caban : kernelbase: Use IOCTL_CONDRV_SET_INPUT_INFO in SetConsoleCP.
Alexandre Julliard
julliard at winehq.org
Tue Aug 18 16:34:23 CDT 2020
Module: wine
Branch: master
Commit: c6e0cb6c720c56541ebb45a6b4821d46f0300f36
URL: https://source.winehq.org/git/wine.git/?a=commit;h=c6e0cb6c720c56541ebb45a6b4821d46f0300f36
Author: Jacek Caban <jacek at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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 );
}
More information about the wine-cvs
mailing list