diff options
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -7813,8 +7813,13 @@ rb_thread_schedule() n = select(max+1, &readfds, &writefds, &exceptfds, delay_ptr); if (n < 0) { + int e = errno; + if (rb_trap_pending) rb_trap_exec(); - if (errno == EINTR) goto again; + if (e == EINTR) goto again; +#ifdef ERESTART + if (e == ERESTART) goto again; +#endif FOREACH_THREAD_FROM(curr, th) { if (th->wait_for & WAIT_SELECT) { int v = 0; |