- ptv = &tv;
- } else {
- ptv = NULL;
- }
- ret = select(maxfd, &rset, &wset, &xset, ptv);
- if (ret == 0)
- now = next;
- else
- now = GETTICKCOUNT();
- } while (ret < 0 && errno != EINTR);
+ ret = select(maxfd, &rset, &wset, &xset, &tv);
+ if (ret == 0)
+ now = next;
+ else
+ now = GETTICKCOUNT();
+ } while (ret < 0 && errno == EINTR);
+ } else {
+ do {
+ ret = select(maxfd, &rset, &wset, &xset, NULL);
+ } while (ret < 0 && errno == EINTR);
+ }