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