From d2cb0959f3ce23b4e2fceffe6dbfdff806ce4800 Mon Sep 17 00:00:00 2001
From: Jeremy Soller <jeremy@system76.com>
Date: Sun, 28 Apr 2019 13:10:34 -0600
Subject: [PATCH] Fix redox epoll timeout

---
 src/platform/redox/epoll.rs | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/platform/redox/epoll.rs b/src/platform/redox/epoll.rs
index 49462c4a..3274860a 100644
--- a/src/platform/redox/epoll.rs
+++ b/src/platform/redox/epoll.rs
@@ -68,15 +68,6 @@ impl PalEpoll for Sys {
             match File::open(c_str!("time:4"), O_RDWR) {
                 Err(_) => return -1,
                 Ok(mut timer) => {
-                    let mut time = TimeSpec::default();
-                    if let Err(err) = timer.read(&mut time) {
-                        return -1;
-                    }
-                    time.tv_nsec += timeout;
-                    if let Err(err) = timer.write(&time) {
-                        return -1;
-                    }
-
                     if Sys::write(
                         epfd,
                         &Event {
@@ -89,6 +80,16 @@ impl PalEpoll for Sys {
                         return -1;
                     }
 
+                    let mut time = TimeSpec::default();
+                    if let Err(err) = timer.read(&mut time) {
+                        return -1;
+                    }
+                    time.tv_sec += (timeout as i64) / 1000;
+                    time.tv_nsec += (timeout % 1000) * 1000000;
+                    if let Err(err) = timer.write(&time) {
+                        return -1;
+                    }
+
                     Some(timer)
                 }
             }
-- 
GitLab