mirror of https://git.tukaani.org/xz.git
tuklib_physmem: Silence warning from -Wcast-function-type on MinGW-w64.
tuklib_physmem depends on GetProcAddress() for both MSVC and MinGW-w64 to retrieve a function address. The proper way to do this is to cast the return value to the type of function pointer retrieved. Unfortunately, this causes a cast-function-type warning, so the best solution is to simply ignore the warning.
This commit is contained in:
parent
720ad4a442
commit
257dbff0ba
|
@ -73,6 +73,17 @@
|
|||
#endif
|
||||
|
||||
|
||||
// With GCC >= 8.1 with -Wextra and Clang >= 13 with -Wcast-function-type
|
||||
// will warn about the Windows-specific code.
|
||||
#if defined(__has_warning)
|
||||
# if __has_warning("-Wcast-function-type")
|
||||
# define CAN_DISABLE_WCAST_FUNCTION_TYPE 1
|
||||
# endif
|
||||
#elif TUKLIB_GNUC_REQ(8,1)
|
||||
# define CAN_DISABLE_WCAST_FUNCTION_TYPE 1
|
||||
#endif
|
||||
|
||||
|
||||
extern uint64_t
|
||||
tuklib_physmem(void)
|
||||
{
|
||||
|
@ -87,8 +98,15 @@ tuklib_physmem(void)
|
|||
HMODULE kernel32 = GetModuleHandle(TEXT("kernel32.dll"));
|
||||
if (kernel32 != NULL) {
|
||||
typedef BOOL (WINAPI *gmse_type)(LPMEMORYSTATUSEX);
|
||||
#ifdef CAN_DISABLE_WCAST_FUNCTION_TYPE
|
||||
# pragma GCC diagnostic push
|
||||
# pragma GCC diagnostic ignored "-Wcast-function-type"
|
||||
#endif
|
||||
gmse_type gmse = (gmse_type)GetProcAddress(
|
||||
kernel32, "GlobalMemoryStatusEx");
|
||||
#ifdef CAN_DISABLE_WCAST_FUNCTION_TYPE
|
||||
# pragma GCC diagnostic pop
|
||||
#endif
|
||||
if (gmse != NULL) {
|
||||
MEMORYSTATUSEX meminfo;
|
||||
meminfo.dwLength = sizeof(meminfo);
|
||||
|
|
Loading…
Reference in New Issue