freebsd-ports/net/sdl_net/files/patch-SDLnetselect.c
2001-07-25 09:50:34 +00:00

30 lines
709 B
C

$FreeBSD$
--- SDLnetselect.c 2001/07/25 09:44:01 1.1
+++ SDLnetselect.c 2001/07/25 09:45:57
@@ -175,6 +175,7 @@
SOCKET maxfd;
int retval;
struct timeval tv;
+ struct timeval *tmp;
fd_set mask;
/* Find the largest file descriptor */
@@ -199,8 +200,14 @@
tv.tv_sec = timeout/1000;
tv.tv_usec = (timeout%1000)*1000;
+ /* XXX: Workaround for a bug in FreeBSD - w/o it in some cases select() chews 100% CPU */
+ if (timeout == ~0)
+ tmp = NULL;
+ else
+ tmp = &tv;
+
/* Look! */
- retval = select(maxfd+1, &mask, NULL, NULL, &tv);
+ retval = select(maxfd+1, &mask, NULL, NULL, tmp);
} while ( errno == EINTR );
/* Mark all file descriptors ready that have data available */