When casting from function pointer which takes some parameters and returns
void to function pointer which returns non-void and may take some
parameters, then gcc throws following warning:

  warning: wspiapi.h:50:20: warning: cast between incompatible function types 
from ‘void (__attribute__((stdcall)) *)(struct addrinfo *)’ to ‘int 
(__attribute__((stdcall)) *)()’ [-Wcast-function-type]

Avoid this warning by first casting to (void(*)(void)) pointer and then to
final (FARPROC) function pointer. Casting from and to (void(*)(void)) gcc
and clang does not throw incompatible cast warnings.

See: https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types
---
 mingw-w64-crt/libsrc/wspiapi/WspiapiFreeAddrInfo.c | 2 +-
 mingw-w64-headers/include/wspiapi.h                | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/mingw-w64-crt/libsrc/wspiapi/WspiapiFreeAddrInfo.c 
b/mingw-w64-crt/libsrc/wspiapi/WspiapiFreeAddrInfo.c
index 8ac613567716..10db4c1b8a51 100644
--- a/mingw-w64-crt/libsrc/wspiapi/WspiapiFreeAddrInfo.c
+++ b/mingw-w64-crt/libsrc/wspiapi/WspiapiFreeAddrInfo.c
@@ -12,6 +12,6 @@ WspiapiFreeAddrInfo (struct addrinfo *ai)
   static WSPIAPI_PFREEADDRINFO pfFreeAddrInfo = NULL;
 
   if (!pfFreeAddrInfo)
-    pfFreeAddrInfo = (WSPIAPI_PFREEADDRINFO) WspiapiLoad(2);
+    pfFreeAddrInfo = (WSPIAPI_PFREEADDRINFO)(void(*)(void)) WspiapiLoad(2);
   (*pfFreeAddrInfo) (ai);
 }
diff --git a/mingw-w64-headers/include/wspiapi.h 
b/mingw-w64-headers/include/wspiapi.h
index c95c46abcc54..80be549d4135 100644
--- a/mingw-w64-headers/include/wspiapi.h
+++ b/mingw-w64-headers/include/wspiapi.h
@@ -45,9 +45,9 @@ extern "C" {
     FARPROC pfAddress;
   } WSPIAPI_FUNCTION;
 
-#define WSPIAPI_FUNCTION_ARRAY { { "getaddrinfo",(FARPROC) 
WspiapiLegacyGetAddrInfo }, \
-  { "getnameinfo",(FARPROC) WspiapiLegacyGetNameInfo }, \
-  { "freeaddrinfo",(FARPROC) WspiapiLegacyFreeAddrInfo } }
+#define WSPIAPI_FUNCTION_ARRAY { { "getaddrinfo",(FARPROC)(void(*)(void)) 
WspiapiLegacyGetAddrInfo }, \
+  { "getnameinfo",(FARPROC)(void(*)(void)) WspiapiLegacyGetNameInfo }, \
+  { "freeaddrinfo",(FARPROC)(void(*)(void)) WspiapiLegacyFreeAddrInfo } }
 
   char *WINAPI WspiapiStrdup (const char *pszString);
   WINBOOL WINAPI WspiapiParseV4Address (const char *pszAddress,PDWORD 
pdwAddress);
-- 
2.20.1



_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to