summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikolay Amiantov <ab@fmap.me>2016-02-19 17:25:46 +0300
committerNikolay Amiantov <ab@fmap.me>2016-02-20 00:19:13 +0300
commitdb22a823f497bf1ad74188f4ead66cfd751b3019 (patch)
tree2883e3afdd2c9e8593b43ab733133999ceabc2c5
parent7fa7206e9ffe4a74762e4a8c1cdc1b8a480d07bb (diff)
downloadnix-db22a823f497bf1ad74188f4ead66cfd751b3019.zip
select: allow infinite timeout
-rw-r--r--src/sys/select.rs4
-rw-r--r--test/sys/test_select.rs2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/sys/select.rs b/src/sys/select.rs
index 9d7c41f8..48746e72 100644
--- a/src/sys/select.rs
+++ b/src/sys/select.rs
@@ -71,11 +71,11 @@ pub fn select(nfds: c_int,
readfds: Option<&mut FdSet>,
writefds: Option<&mut FdSet>,
errorfds: Option<&mut FdSet>,
- timeout: &mut TimeVal) -> Result<c_int> {
+ timeout: Option<&mut TimeVal>) -> Result<c_int> {
let readfds = readfds.map(|set| set as *mut FdSet).unwrap_or(null_mut());
let writefds = writefds.map(|set| set as *mut FdSet).unwrap_or(null_mut());
let errorfds = errorfds.map(|set| set as *mut FdSet).unwrap_or(null_mut());
- let timeout = timeout as *mut TimeVal;
+ let timeout = timeout.map(|tv| tv as *mut TimeVal).unwrap_or(null_mut());
let res = unsafe {
ffi::select(nfds, readfds, writefds, errorfds, timeout)
diff --git a/test/sys/test_select.rs b/test/sys/test_select.rs
index 74b390f9..68908670 100644
--- a/test/sys/test_select.rs
+++ b/test/sys/test_select.rs
@@ -46,7 +46,7 @@ fn test_select() {
Some(&mut fd_set),
None,
None,
- &mut timeout).unwrap());
+ Some(&mut timeout)).unwrap());
assert!(fd_set.contains(r1));
assert!(!fd_set.contains(r2));
}