* select.cc (select): Add workaround for, as yet undebugged, pathological case.

This commit is contained in:
Christopher Faylor 2013-12-03 20:28:55 +00:00
parent d7f07b3dde
commit 4bf6a52173
2 changed files with 11 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2013-12-03 Christopher Faylor <me.cygwin2013@cgf.cx>
* select.cc (select): Add workaround for, as yet undebugged,
pathological case.
2013-12-01 Christopher Faylor <me.cygwin2013@cgf.cx>
* dtable.cc (dtable::find_unused_handle): Break out of the right loop.

View File

@ -189,8 +189,11 @@ select (int maxfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
copyfd_set (readfds, r, maxfds);
copyfd_set (writefds, w, maxfds);
copyfd_set (exceptfds, e, maxfds);
/* Actually set the bit mask from sel records */
res = (res == select_stuff::select_set_zero) ? 0 : sel.poll (readfds, writefds, exceptfds);
if (res == select_stuff::select_set_zero)
res = 0;
else
/* Set the bit mask from sel records */
res = sel.poll (readfds, writefds, exceptfds) ?: select_stuff::select_loop;
}
/* Always clean up everything here. If we're looping then build it
all up again. */
@ -389,7 +392,7 @@ next_while:;
wait_ret = MsgWaitForMultipleObjectsEx (m, w4, ms,
QS_ALLINPUT | QS_ALLPOSTMESSAGE,
MWMO_INPUTAVAILABLE);
select_printf ("wait_ret %d. verifying", wait_ret);
select_printf ("wait_ret %d, m = %d. verifying", wait_ret, m);
wait_states res;
switch (wait_ret)