Jacek Caban : kernel32: Allow non-console handles in CloseConsoleHandle.

Alexandre Julliard julliard at winehq.org
Wed Nov 11 15:31:43 CST 2020


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

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Nov 11 20:06:48 2020 +0100

kernel32: Allow non-console handles in CloseConsoleHandle.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernel32/console.c        | 7 +------
 dlls/kernel32/kernel_private.h | 8 --------
 dlls/kernel32/tests/console.c  | 2 --
 3 files changed, 1 insertion(+), 16 deletions(-)

diff --git a/dlls/kernel32/console.c b/dlls/kernel32/console.c
index 8d5f8181ffe..d55c589eaf7 100644
--- a/dlls/kernel32/console.c
+++ b/dlls/kernel32/console.c
@@ -125,12 +125,7 @@ HANDLE WINAPI DuplicateConsoleHandle(HANDLE handle, DWORD access, BOOL inherit,
  */
 BOOL WINAPI CloseConsoleHandle(HANDLE handle)
 {
-    if (!is_console_handle(handle)) 
-    {
-        SetLastError(ERROR_INVALID_PARAMETER);
-        return FALSE;
-    }
-    return CloseHandle(wine_server_ptr_handle(console_handle_unmap(handle)));
+    return CloseHandle(handle);
 }
 
 /******************************************************************
diff --git a/dlls/kernel32/kernel_private.h b/dlls/kernel32/kernel_private.h
index fe19e2ed5cb..fa1dd79d0c0 100644
--- a/dlls/kernel32/kernel_private.h
+++ b/dlls/kernel32/kernel_private.h
@@ -21,8 +21,6 @@
 #ifndef __WINE_KERNEL_PRIVATE_H
 #define __WINE_KERNEL_PRIVATE_H
 
-#include "wine/server.h"
-
 NTSTATUS WINAPI BaseGetNamedObjectDirectory( HANDLE *dir );
 BOOL           CONSOLE_Init(RTL_USER_PROCESS_PARAMETERS *params) DECLSPEC_HIDDEN;
 
@@ -37,12 +35,6 @@ static inline HANDLE console_handle_map(HANDLE h)
     return h != INVALID_HANDLE_VALUE ? (HANDLE)((UINT_PTR)h ^ 3) : INVALID_HANDLE_VALUE;
 }
 
-/* map a kernel32 console handle onto a real wineserver handle */
-static inline obj_handle_t console_handle_unmap(HANDLE h)
-{
-    return wine_server_obj_handle( h != INVALID_HANDLE_VALUE ? (HANDLE)((UINT_PTR)h ^ 3) : INVALID_HANDLE_VALUE );
-}
-
 static inline BOOL set_ntstatus( NTSTATUS status )
 {
     if (status) SetLastError( RtlNtStatusToDosError( status ));
diff --git a/dlls/kernel32/tests/console.c b/dlls/kernel32/tests/console.c
index 69005bab5f1..13e17e14e4c 100644
--- a/dlls/kernel32/tests/console.c
+++ b/dlls/kernel32/tests/console.c
@@ -1523,10 +1523,8 @@ static void test_DuplicateConsoleHandle(void)
     ok(ret, "SetEvent failed: %u\n", GetLastError());
 
     ret = CloseConsoleHandle(handle);
-    todo_wine
     ok(ret, "CloseConsoleHandle failed: %u\n", GetLastError());
     ret = CloseConsoleHandle(event);
-    todo_wine
     ok(ret, "CloseConsoleHandle failed: %u\n", GetLastError());
 
     handle = DuplicateConsoleHandle((HANDLE)0xdeadbeef, 0, FALSE, DUPLICATE_SAME_ACCESS);




More information about the wine-cvs mailing list