os/windows/posix.c: Use INVALID_SOCKET instead of < 0
authorBart Van Assche <bvanassche@acm.org>
Sat, 4 Jul 2020 03:20:00 +0000 (20:20 -0700)
committerBart Van Assche <bvanassche@acm.org>
Sat, 4 Jul 2020 22:59:19 +0000 (15:59 -0700)
From
https://docs.microsoft.com/en-us/windows/win32/winsock/socket-data-type-2:
"Because the SOCKET type is unsigned, compiling existing source code from,
for example, a UNIX environment may lead to compiler warnings about
signed/unsigned data type mismatches.

This means, for example, that checking for errors when the socket and
accept functions return should not be done by comparing the return value
with -1, or seeing if the value is negative (both common and legal
approaches in UNIX). Instead, an application should use the manifest
constant INVALID_SOCKET as defined in the Winsock2.h header file."

This patch fixes the following build error for the latest version of
the MinGW64 cross-compiler on Cygwin:

os/windows/posix.c:886:17: error: comparison of unsigned expression < 0
  is always false

Signed-off-by: Bart Van Assche <bvanassche@acm.org>
os/windows/posix.c

index 729d1b1fc3380d9eadc8c325aded1670a93ddabc..31271de049133b8728c26f47f6d4e34a13208cc6 100644 (file)
@@ -883,7 +883,7 @@ int poll(struct pollfd fds[], nfds_t nfds, int timeout)
        FD_ZERO(&exceptfds);
 
        for (i = 0; i < nfds; i++) {
-               if (fds[i].fd < 0) {
+               if (fds[i].fd == INVALID_SOCKET) {
                        fds[i].revents = 0;
                        continue;
                }
@@ -900,7 +900,7 @@ int poll(struct pollfd fds[], nfds_t nfds, int timeout)
 
        if (rc != SOCKET_ERROR) {
                for (i = 0; i < nfds; i++) {
-                       if (fds[i].fd < 0)
+                       if (fds[i].fd == INVALID_SOCKET)
                                continue;
 
                        if ((fds[i].events & POLLIN) && FD_ISSET(fds[i].fd, &readfds))