diff --git a/test/run-tests.c b/test/run-tests.c index 511707494..9c2574ebf 100644 --- a/test/run-tests.c +++ b/test/run-tests.c @@ -214,7 +214,10 @@ static int maybe_run_test(int argc, char **argv) { #ifdef _WIN32 DWORD flags; HMODULE kernelbase_module; - sCompareObjectHandles pCompareObjectHandles; /* function introduced in Windows 10 */ + union { + FARPROC proc; + sCompareObjectHandles pCompareObjectHandles; /* Windows >= 10 */ + } u; #endif notify_parent_process(); ASSERT_EQ(sizeof(closed_fd), read(0, &closed_fd, sizeof(closed_fd))); @@ -224,10 +227,9 @@ static int maybe_run_test(int argc, char **argv) { ASSERT_GT((intptr_t) open_fd, 0); ASSERT_NE(0, GetHandleInformation(open_fd, &flags)); kernelbase_module = GetModuleHandleW(L"kernelbase.dll"); - pCompareObjectHandles = (sCompareObjectHandles) - GetProcAddress(kernelbase_module, "CompareObjectHandles"); - ASSERT_NE(pCompareObjectHandles == NULL || \ - !pCompareObjectHandles(open_fd, closed_fd), 0); + u.proc = GetProcAddress(kernelbase_module, "CompareObjectHandles"); + if (u.pCompareObjectHandles != NULL) + ASSERT_EQ(FALSE, u.pCompareObjectHandles(open_fd, closed_fd)); #else ASSERT_GT(open_fd, 2); ASSERT_GT(closed_fd, 2); diff --git a/test/test-spawn.c b/test/test-spawn.c index 0dad9bcdc..eaaa8bbea 100644 --- a/test/test-spawn.c +++ b/test/test-spawn.c @@ -1678,7 +1678,10 @@ TEST_IMPL(spawn_fs_open) { #ifdef _WIN32 const char dev_null[] = "NUL"; HMODULE kernelbase_module; - sCompareObjectHandles pCompareObjectHandles; /* function introduced in Windows 10 */ + union { + FARPROC proc; + sCompareObjectHandles pCompareObjectHandles; /* Windows >= 10 */ + } u; #else const char dev_null[] = "/dev/null"; #endif @@ -1702,11 +1705,9 @@ TEST_IMPL(spawn_fs_open) { ASSERT_NE(0, DuplicateHandle(GetCurrentProcess(), fd, GetCurrentProcess(), &dup_fd, 0, /* inherit */ TRUE, DUPLICATE_SAME_ACCESS)); kernelbase_module = GetModuleHandleW(L"kernelbase.dll"); - pCompareObjectHandles = (sCompareObjectHandles) - GetProcAddress(kernelbase_module, "CompareObjectHandles"); - ASSERT_NE(pCompareObjectHandles == NULL || - pCompareObjectHandles(fd, dup_fd), - 0); + u.proc = GetProcAddress(kernelbase_module, "CompareObjectHandles"); + if (u.pCompareObjectHandles != NULL) + ASSERT_EQ(TRUE, u.pCompareObjectHandles(fd, dup_fd)); #else dup_fd = dup(fd); #endif