diff options
Diffstat (limited to 'ext/sleepy_penguin/kqueue.c')
-rw-r--r-- | ext/sleepy_penguin/kqueue.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/ext/sleepy_penguin/kqueue.c b/ext/sleepy_penguin/kqueue.c index 155204b..4d5785f 100644 --- a/ext/sleepy_penguin/kqueue.c +++ b/ext/sleepy_penguin/kqueue.c @@ -158,8 +158,12 @@ static VALUE kevent_result(struct kq_per_thread *kpt, int nevents) int i; struct kevent *event = kpt->events; - if (nevents < 0) - rb_sys_fail("kevent"); + if (nevents < 0) { + if (errno == EINTR) + nevents = 0; + else + rb_sys_fail("kevent"); + } for (i = nevents; --i >= 0; event++) yield_kevent(event); |