$FreeBSD: ports/net/sdl_net/files/patch-SDLnetselect.c,v 1.1 2001/07/25 09:50:34 sobomax Exp $

--- 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 */


syntax highlighted by Code2HTML, v. 0.9.1