Nikolay Sivov : kernel32: Added support for GET_MODULE_HANDLE_EX_FLAG_PIN.

Alexandre Julliard julliard at winehq.org
Fri Jan 10 14:44:51 CST 2014


Module: wine
Branch: stable
Commit: c4335b398a7e08998407aa6434c5ad3ce9821b3b
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c4335b398a7e08998407aa6434c5ad3ce9821b3b

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Tue Oct 15 10:20:31 2013 +0400

kernel32: Added support for GET_MODULE_HANDLE_EX_FLAG_PIN.

(cherry picked from commit 9a6567d1a6161f331ae4e07f3bd2697875af3d74)

---

 dlls/kernel32/module.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/dlls/kernel32/module.c b/dlls/kernel32/module.c
index 9913f1b..babc756 100644
--- a/dlls/kernel32/module.c
+++ b/dlls/kernel32/module.c
@@ -507,6 +507,7 @@ BOOL WINAPI GetModuleHandleExW( DWORD flags, LPCWSTR name, HMODULE *module )
     NTSTATUS status = STATUS_SUCCESS;
     HMODULE ret;
     ULONG magic;
+    BOOL lock;
 
     if (!module)
     {
@@ -515,8 +516,8 @@ BOOL WINAPI GetModuleHandleExW( DWORD flags, LPCWSTR name, HMODULE *module )
     }
 
     /* if we are messing with the refcount, grab the loader lock */
-    if ((flags & GET_MODULE_HANDLE_EX_FLAG_PIN) ||
-        !(flags & GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT))
+    lock = (flags & GET_MODULE_HANDLE_EX_FLAG_PIN) || !(flags & GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT);
+    if (lock)
         LdrLockLoaderLock( 0, NULL, &magic );
 
     if (!name)
@@ -538,14 +539,13 @@ BOOL WINAPI GetModuleHandleExW( DWORD flags, LPCWSTR name, HMODULE *module )
     if (status == STATUS_SUCCESS)
     {
         if (flags & GET_MODULE_HANDLE_EX_FLAG_PIN)
-            FIXME( "should pin refcount for %p\n", ret );
+            LdrAddRefDll( LDR_ADDREF_DLL_PIN, ret );
         else if (!(flags & GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT))
             LdrAddRefDll( 0, ret );
     }
     else SetLastError( RtlNtStatusToDosError( status ) );
 
-    if ((flags & GET_MODULE_HANDLE_EX_FLAG_PIN) ||
-        !(flags & GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT))
+    if (lock)
         LdrUnlockLoaderLock( 0, magic );
 
     if (status == STATUS_SUCCESS) *module = ret;




More information about the wine-cvs mailing list