Before declaring h_errno, do not check for Win32 only. Instead, do check
whether h_errno is a macro.
diff --git a/Modules/getaddrinfo.c b/Modules/getaddrinfo.c
index 9bc9917..7d07e53 100644
--- a/Modules/getaddrinfo.c
+++ b/Modules/getaddrinfo.c
@@ -544,7 +544,7 @@
struct gai_afd *gai_afd;
int i, error = 0, h_error;
char *ap;
-#if !defined(INET6) && !defined(MS_WIN32)
+#if !defined(INET6) && !defined(h_errno)
/* In winsock.h, h_errno is #defined as a function call. */
extern int h_errno;
#endif
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 7fa8264..1c19c28 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -1789,7 +1789,7 @@
if (h == NULL) {
/* Let's get real error message to return */
-#ifndef MS_WIN32
+#ifndef h_errno
extern int h_errno;
#endif
PyH_Err(h_errno);