Jacek Caban : kernelbase: Use IOCTL_CONDRV_GET_INPUT_INFO in GetConsoleCP.

Alexandre Julliard julliard at winehq.org
Fri Aug 14 16:39:31 CDT 2020


Module: wine
Branch: master
Commit: 4faed406d428a2cec752c2aa1bda8449a1342057
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=4faed406d428a2cec752c2aa1bda8449a1342057

Author: Jacek Caban <jacek at 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 at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at 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();
 }
 
 




More information about the wine-cvs mailing list