Module: wine Branch: stable Commit: c4335b398a7e08998407aa6434c5ad3ce9821b3b URL: http://source.winehq.org/git/wine.git/?a=commit;h=c4335b398a7e08998407aa6434...
Author: Nikolay Sivov nsivov@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;