diff options
-rw-r--r-- | lib/sleepy_penguin/kqueue/io.rb | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/sleepy_penguin/kqueue/io.rb b/lib/sleepy_penguin/kqueue/io.rb index 1e5809d..15502d4 100644 --- a/lib/sleepy_penguin/kqueue/io.rb +++ b/lib/sleepy_penguin/kqueue/io.rb @@ -15,11 +15,12 @@ class SleepyPenguin::Kqueue::IO expire_at = timeout ? Time.now + timeout : nil begin IO.select([self], nil, nil, timeout) - n = __kevent(changelist, nevents, 0) do |a,b,c,d,e,f| - yield a, b, c, d, e + n = __kevent(changelist, nevents, 0) do |*args| + yield(*args) end - end while n == 0 && + end while n == 0 && timeout != 0 && (expire_at == nil || timeout = __update_timeout(expire_at)) + n else # nevents should be zero or nil here __kevent(changelist, nevents, 0) |