--- select.orig.c Thu Jun 21 08:52:04 2001 +++ select.c Thu Jun 21 12:09:25 2001 @@ -165,6 +165,7 @@ poll_table table, *wait; int retval, i, off; long __timeout = *timeout; + unsigned long bits; read_lock(¤t->files->file_lock); retval = max_select_fd(n, fds); @@ -187,7 +188,14 @@ struct file *file; off = i / __NFDBITS; - if (!(bit & BITS(fds, off))) + if (!(i & (__NFDBITS - 1))) { + bits = BITS(fds, off); + if (!bits) { + i += __NFDBITS - 1; + continue; + } + } + if (!(bit & bits)) continue; file = fget(i); mask = POLLNVAL;