mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 23:24:09 +00:00
Don't increment module reference counts due to symbol resolving.
This commit is contained in:
parent
e3c7476533
commit
0a31c6373c
@ -75,6 +75,7 @@ static const char *ll_bcsym(void *lib, const char *sym)
|
||||
|
||||
#ifndef GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
|
||||
#define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 4
|
||||
#define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT 2
|
||||
BOOL WINAPI GetModuleHandleExA(DWORD, LPCSTR, HMODULE*);
|
||||
#endif
|
||||
|
||||
@ -132,7 +133,7 @@ static const char *ll_bcsym(void *lib, const char *sym)
|
||||
} else {
|
||||
HINSTANCE h = GetModuleHandleA(NULL);
|
||||
const char *p = (const char *)GetProcAddress(h, sym);
|
||||
if (p == NULL && GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
|
||||
if (p == NULL && GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS|GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
|
||||
(const char *)ll_bcsym, &h))
|
||||
p = (const char *)GetProcAddress(h, sym);
|
||||
return p;
|
||||
|
@ -134,6 +134,7 @@ static void *clib_getsym(CLibrary *cl, const char *name)
|
||||
|
||||
#ifndef GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
|
||||
#define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS 4
|
||||
#define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT 2
|
||||
BOOL WINAPI GetModuleHandleExA(DWORD, LPCSTR, HMODULE*);
|
||||
#endif
|
||||
|
||||
@ -217,13 +218,13 @@ static void *clib_getsym(CLibrary *cl, const char *name)
|
||||
HINSTANCE h = (HINSTANCE)clib_def_handle[i];
|
||||
if (!(void *)h) { /* Resolve default library handles (once). */
|
||||
switch (i) {
|
||||
case CLIB_HANDLE_EXE: GetModuleHandleExA(0, NULL, &h); break;
|
||||
case CLIB_HANDLE_EXE: GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, NULL, &h); break;
|
||||
case CLIB_HANDLE_DLL:
|
||||
GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
|
||||
GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS|GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
|
||||
(const char *)clib_def_handle, &h);
|
||||
break;
|
||||
case CLIB_HANDLE_CRT:
|
||||
GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
|
||||
GetModuleHandleExA(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS|GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
|
||||
(const char *)&_fmode, &h);
|
||||
break;
|
||||
case CLIB_HANDLE_KERNEL32: h = LoadLibraryA("kernel32.dll"); break;
|
||||
|
Loading…
Reference in New Issue
Block a user