autoupdate ylwrap
[gnulib.git] / lib / sockets.c
index 9a44809..53cb66e 100644 (file)
 /* Specification.  */
 #include "sockets.h"
 
-/* The attribute __const__ was added in gcc 2.95.  */
-#undef _GL_ATTRIBUTE_CONST
-#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
-# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
-#else
-# define _GL_ATTRIBUTE_CONST /* empty */
-#endif
-
 #if WINDOWS_SOCKETS
 
 /* This includes winsock2.h on MinGW. */
@@ -45,6 +37,10 @@ close_fd_maybe_socket (const struct fd_hook *remaining_list,
                        gl_close_fn primary,
                        int fd)
 {
+  /* Note about multithread-safety: There is a race condition where, between
+     our calls to closesocket() and the primary close(), some other thread
+     could make system calls that allocate precisely the same HANDLE value
+     as sock; then the primary close() would call CloseHandle() on it.  */
   SOCKET sock;
   WSANETWORKEVENTS ev;
 
@@ -111,7 +107,7 @@ static int initialized_sockets_version /* = 0 */;
 
 #endif /* WINDOWS_SOCKETS */
 
-int _GL_ATTRIBUTE_CONST
+int
 gl_sockets_startup (int version _GL_UNUSED)
 {
 #if WINDOWS_SOCKETS