From b93320613e92f68361c9b3c34e8f6103c4f2657a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 26 Jan 2018 15:41:01 +0100 Subject: [PATCH 1/2] Network/Windows: MinGW compatibility fix --- src/Nazara/Network/Win32/IpAddressImpl.cpp | 5 +++++ src/Nazara/Network/Win32/SocketPollerImpl.cpp | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Nazara/Network/Win32/IpAddressImpl.cpp b/src/Nazara/Network/Win32/IpAddressImpl.cpp index 992b075a9..d9dac2368 100644 --- a/src/Nazara/Network/Win32/IpAddressImpl.cpp +++ b/src/Nazara/Network/Win32/IpAddressImpl.cpp @@ -9,6 +9,11 @@ #include #include +// some MinGW distributions seem to lack some defines +#ifndef WSA_NOT_ENOUGH_MEMORY +#define WSA_NOT_ENOUGH_MEMORY 8L +#endif + namespace Nz { namespace Detail diff --git a/src/Nazara/Network/Win32/SocketPollerImpl.cpp b/src/Nazara/Network/Win32/SocketPollerImpl.cpp index 43dc9fec2..658e86c8e 100644 --- a/src/Nazara/Network/Win32/SocketPollerImpl.cpp +++ b/src/Nazara/Network/Win32/SocketPollerImpl.cpp @@ -37,7 +37,7 @@ namespace Nz #if NAZARA_NETWORK_POLL_SUPPORT return m_readyToReadSockets.count(socket) != 0; #else - return FD_ISSET(socket, &m_readyToReadSockets) != 0; + return FD_ISSET(socket, const_cast(&m_readyToReadSockets)) != 0; //< FD_ISSET is not const-correct #endif } @@ -46,7 +46,7 @@ namespace Nz #if NAZARA_NETWORK_POLL_SUPPORT return m_readyToWriteSockets.count(socket) != 0; #else - return FD_ISSET(socket, &m_readyToWriteSockets) != 0; + return FD_ISSET(socket, const_cast(&m_readyToWriteSockets)) != 0; //< FD_ISSET is not const-correct #endif } @@ -55,8 +55,9 @@ namespace Nz #if NAZARA_NETWORK_POLL_SUPPORT return m_allSockets.count(socket) != 0; #else - return FD_ISSET(socket, &m_readSockets) != 0 || - FD_ISSET(socket, &m_writeSockets) != 0; + // FD_ISSET is not const-correct + return FD_ISSET(socket, const_cast(&m_readSockets)) != 0 || + FD_ISSET(socket, const_cast(&m_writeSockets)) != 0; #endif } From 3f7bac186b11ec1fb10329c4080e3e640a7ab6e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Fri, 26 Jan 2018 16:11:53 +0100 Subject: [PATCH 2/2] Network/Win32: Second patch for MinGW #157 Extending Mstcpip.h fix using C++17 feature __has_include --- src/Nazara/Network/Win32/IpAddressImpl.cpp | 6 +++++- src/Nazara/Network/Win32/SocketImpl.cpp | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Nazara/Network/Win32/IpAddressImpl.cpp b/src/Nazara/Network/Win32/IpAddressImpl.cpp index d9dac2368..257e50cf6 100644 --- a/src/Nazara/Network/Win32/IpAddressImpl.cpp +++ b/src/Nazara/Network/Win32/IpAddressImpl.cpp @@ -10,8 +10,12 @@ #include // some MinGW distributions seem to lack some defines +#ifndef ERROR_NOT_ENOUGH_MEMORY +#define ERROR_NOT_ENOUGH_MEMORY 8L +#endif + #ifndef WSA_NOT_ENOUGH_MEMORY -#define WSA_NOT_ENOUGH_MEMORY 8L +#define WSA_NOT_ENOUGH_MEMORY (ERROR_NOT_ENOUGH_MEMORY) #endif namespace Nz diff --git a/src/Nazara/Network/Win32/SocketImpl.cpp b/src/Nazara/Network/Win32/SocketImpl.cpp index b410af93c..e7af5ff71 100644 --- a/src/Nazara/Network/Win32/SocketImpl.cpp +++ b/src/Nazara/Network/Win32/SocketImpl.cpp @@ -8,8 +8,8 @@ #include #include -#if defined(NAZARA_COMPILER_MINGW) && __GNUC__ < 5 // Some compilers (olders versions of MinGW) are lacking Mstcpip.h which defines the following struct/#define +#if (defined(__has_include) && !__has_include()) || (defined(NAZARA_COMPILER_MINGW) && !defined(__has_include)) struct tcp_keepalive { u_long onoff;