X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fsockets.c;h=53cb66e4681ee1f3906ce346a415a72a2f4f9c98;hb=5b9e0c3ce734b9d9b0c0001e31b65a8a4713700d;hp=9a448097c47fcebaecf864ff64ab2eb37154f821;hpb=349d7fe0e307d59d508b3579317ee8d4eacfeb9c;p=gnulib.git diff --git a/lib/sockets.c b/lib/sockets.c index 9a448097c..53cb66e46 100644 --- a/lib/sockets.c +++ b/lib/sockets.c @@ -22,14 +22,6 @@ /* 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