* select.cc (select): Add workaround for, as yet undebugged, pathological case.
This commit is contained in:
		| @@ -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> | 2013-12-01  Christopher Faylor  <me.cygwin2013@cgf.cx> | ||||||
|  |  | ||||||
| 	* dtable.cc (dtable::find_unused_handle): Break out of the right loop. | 	* dtable.cc (dtable::find_unused_handle): Break out of the right loop. | ||||||
|   | |||||||
| @@ -189,8 +189,11 @@ select (int maxfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, | |||||||
| 	  copyfd_set (readfds, r, maxfds); | 	  copyfd_set (readfds, r, maxfds); | ||||||
| 	  copyfd_set (writefds, w, maxfds); | 	  copyfd_set (writefds, w, maxfds); | ||||||
| 	  copyfd_set (exceptfds, e, maxfds); | 	  copyfd_set (exceptfds, e, maxfds); | ||||||
| 	  /* Actually set the bit mask from sel records */ | 	  if (res == select_stuff::select_set_zero) | ||||||
| 	  res = (res == select_stuff::select_set_zero) ? 0 : sel.poll (readfds, writefds, exceptfds); | 	    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 |       /* Always clean up everything here.  If we're looping then build it | ||||||
| 	 all up again.  */ | 	 all up again.  */ | ||||||
| @@ -389,7 +392,7 @@ next_while:; | |||||||
|     wait_ret = MsgWaitForMultipleObjectsEx (m, w4, ms, |     wait_ret = MsgWaitForMultipleObjectsEx (m, w4, ms, | ||||||
| 					    QS_ALLINPUT | QS_ALLPOSTMESSAGE, | 					    QS_ALLINPUT | QS_ALLPOSTMESSAGE, | ||||||
| 					    MWMO_INPUTAVAILABLE); | 					    MWMO_INPUTAVAILABLE); | ||||||
|   select_printf ("wait_ret %d.  verifying", wait_ret); |   select_printf ("wait_ret %d, m = %d.  verifying", wait_ret, m); | ||||||
|  |  | ||||||
|   wait_states res; |   wait_states res; | ||||||
|   switch (wait_ret) |   switch (wait_ret) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user