From e0dd51cc5dc9693c3d54636bc488309779709185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Wed, 6 Jun 2018 21:45:43 +0200 Subject: [PATCH 1/2] Add -Wlogical-op compiler warning --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 80076d0845..1b76719326 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -94,6 +94,7 @@ else () ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_RESTRICT -Wrestrict) ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_MISSING_FIELD_INITIALIZERS -Wmissing-field-initializers) ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_UNREACHABLE_CODE_BREAK -Wunreachable-code-break) + ADD_CHECK_CXX_COMPILER_FLAG(CMAKE_CXX_FLAGS CXX_WARN_LOGICAL_OP -Wlogical-op) # Items below are not supported by ICC if (NOT MINGW) From bfffa5018084079fd3205fcf34dc4a974d70d3b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Tue, 15 May 2018 21:30:34 +0200 Subject: [PATCH 2/2] Provide static_assert checking for EAGAIN == EWOULDBLOCK Allows turning on -Wlogical-op --- src/openrct2/network/TcpSocket.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/openrct2/network/TcpSocket.cpp b/src/openrct2/network/TcpSocket.cpp index e3ef23b792..f1ed7ea7d5 100644 --- a/src/openrct2/network/TcpSocket.cpp +++ b/src/openrct2/network/TcpSocket.cpp @@ -391,7 +391,17 @@ public: else if (readBytes == SOCKET_ERROR) { *sizeReceived = 0; - if (LAST_SOCKET_ERROR() != EWOULDBLOCK && LAST_SOCKET_ERROR() != EAGAIN) +#ifndef _WIN32 + // Removing the check for EAGAIN and instead relying on the values being the same allows turning on of + // -Wlogical-op warning. + // This is not true on Windows, see: + // * https://msdn.microsoft.com/en-us/library/windows/desktop/ms737828(v=vs.85).aspx + // * https://msdn.microsoft.com/en-us/library/windows/desktop/ms741580(v=vs.85).aspx + // * https://msdn.microsoft.com/en-us/library/windows/desktop/ms740668(v=vs.85).aspx + static_assert(EWOULDBLOCK == EAGAIN, "Portability note: your system has different values for EWOULDBLOCK " + "and EAGAIN, please extend the condition below"); +#endif // _WIN32 + if (LAST_SOCKET_ERROR() != EWOULDBLOCK) { return NETWORK_READPACKET_DISCONNECTED; }