kernel32/tests: Load all test function pointers on init.

Signed-off-by: Rémi Bernon <rbernon@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Rémi Bernon 2022-04-07 21:50:17 +02:00 committed by Alexandre Julliard
parent 5972691e08
commit 60e0ae2f4c
1 changed files with 23 additions and 10 deletions

View File

@ -40,9 +40,28 @@
/* use function pointers to avoid warnings for invalid parameter tests */ /* use function pointers to avoid warnings for invalid parameter tests */
static LPVOID (WINAPI *pHeapAlloc)(HANDLE,DWORD,SIZE_T); static LPVOID (WINAPI *pHeapAlloc)(HANDLE,DWORD,SIZE_T);
static LPVOID (WINAPI *pHeapReAlloc)(HANDLE,DWORD,LPVOID,SIZE_T); static LPVOID (WINAPI *pHeapReAlloc)(HANDLE,DWORD,LPVOID,SIZE_T);
static BOOL (WINAPI *pHeapQueryInformation)(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T, PSIZE_T); static BOOL (WINAPI *pGetPhysicallyInstalledSystemMemory)( ULONGLONG * );
static BOOL (WINAPI *pGetPhysicallyInstalledSystemMemory)(ULONGLONG *);
static ULONG (WINAPI *pRtlGetNtGlobalFlags)(void); #define MAKE_FUNC(f) static typeof(f) *p ## f
MAKE_FUNC( HeapQueryInformation );
MAKE_FUNC( GlobalFlags );
MAKE_FUNC( RtlGetNtGlobalFlags );
#undef MAKE_FUNC
static void load_functions(void)
{
HMODULE kernel32 = GetModuleHandleW( L"kernel32.dll" );
HMODULE ntdll = GetModuleHandleW( L"ntdll.dll" );
#define LOAD_FUNC(m, f) p ## f = (void *)GetProcAddress( m, #f );
LOAD_FUNC( kernel32, HeapAlloc );
LOAD_FUNC( kernel32, HeapReAlloc );
LOAD_FUNC( kernel32, HeapQueryInformation );
LOAD_FUNC( kernel32, GetPhysicallyInstalledSystemMemory );
LOAD_FUNC( kernel32, GlobalFlags );
LOAD_FUNC( ntdll, RtlGetNtGlobalFlags );
#undef LOAD_FUNC
}
struct heap struct heap
{ {
@ -1079,7 +1098,6 @@ static void test_HeapQueryInformation(void)
SIZE_T size; SIZE_T size;
BOOL ret; BOOL ret;
pHeapQueryInformation = (void *)GetProcAddress(GetModuleHandleA("kernel32.dll"), "HeapQueryInformation");
if (!pHeapQueryInformation) if (!pHeapQueryInformation)
{ {
win_skip("HeapQueryInformation is not available\n"); win_skip("HeapQueryInformation is not available\n");
@ -1462,12 +1480,10 @@ static void test_child_heap( const char *arg )
static void test_GetPhysicallyInstalledSystemMemory(void) static void test_GetPhysicallyInstalledSystemMemory(void)
{ {
HMODULE kernel32 = GetModuleHandleA("kernel32.dll");
MEMORYSTATUSEX memstatus; MEMORYSTATUSEX memstatus;
ULONGLONG total_memory; ULONGLONG total_memory;
BOOL ret; BOOL ret;
pGetPhysicallyInstalledSystemMemory = (void *)GetProcAddress(kernel32, "GetPhysicallyInstalledSystemMemory");
if (!pGetPhysicallyInstalledSystemMemory) if (!pGetPhysicallyInstalledSystemMemory)
{ {
win_skip("GetPhysicallyInstalledSystemMemory is not available\n"); win_skip("GetPhysicallyInstalledSystemMemory is not available\n");
@ -1575,10 +1591,7 @@ START_TEST(heap)
int argc; int argc;
char **argv; char **argv;
pHeapAlloc = (void *)GetProcAddress( GetModuleHandleA("kernel32"), "HeapAlloc" ); load_functions();
pHeapReAlloc = (void *)GetProcAddress( GetModuleHandleA("kernel32"), "HeapReAlloc" );
pRtlGetNtGlobalFlags = (void *)GetProcAddress( GetModuleHandleA("ntdll.dll"), "RtlGetNtGlobalFlags" );
argc = winetest_get_mainargs( &argv ); argc = winetest_get_mainargs( &argv );
if (argc >= 3) if (argc >= 3)