diff --git a/src/platform/redox/epoll.rs b/src/platform/redox/epoll.rs index 3274860a1b62037d1f516f3a8a44f421d6e55cfa..dd0dfc35a175e56609bf9e8d0560c12a236a3211 100644 --- a/src/platform/redox/epoll.rs +++ b/src/platform/redox/epoll.rs @@ -105,13 +105,15 @@ impl PalEpoll for Sys { } let read = bytes_read as usize / mem::size_of::<epoll_event>(); + let mut count = 0; for i in 0..read { unsafe { let event_ptr = events.add(i); let event = *(event_ptr as *mut Event); if let Some(ref timer) = timer_opt { if event.id as c_int == timer.fd { - return EINTR; + // Do not count timer event + continue; } } *event_ptr = epoll_event { @@ -119,9 +121,10 @@ impl PalEpoll for Sys { data: mem::transmute(event.data), ..Default::default() }; + count += 1; } } - read as c_int + count as c_int } }