summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml10
-rw-r--r--src/sys/epoll.rs24
2 files changed, 12 insertions, 22 deletions
diff --git a/.travis.yml b/.travis.yml
index f0aa93f1..c8caf483 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -93,15 +93,9 @@ matrix:
rust: 1.13.0
os: osx
- # Testing beta on main targets
+ # Make sure stable is always working too
- env: TARGET=x86_64-unknown-linux-gnu
- rust: beta
-
- allow_failures:
- # We allow beta to fail here because a bug might crop up in rust that causes it. We will
- # however be on the lookout for this and file those bugs with upstream.
- - env: TARGET=x86_64-unknown-linux-gnu
- rust: beta
+ rust: stable
before_install: set -e
diff --git a/src/sys/epoll.rs b/src/sys/epoll.rs
index 5ab766dc..5d63e82f 100644
--- a/src/sys/epoll.rs
+++ b/src/sys/epoll.rs
@@ -65,16 +65,6 @@ impl EpollEvent {
}
}
-impl<'a> Into<&'a mut EpollEvent> for Option<&'a mut EpollEvent> {
- #[inline]
- fn into(self) -> &'a mut EpollEvent {
- match self {
- Some(epoll_event) => epoll_event,
- None => unsafe { &mut *ptr::null_mut::<EpollEvent>() }
- }
- }
-}
-
#[inline]
pub fn epoll_create() -> Result<RawFd> {
let res = unsafe { libc::epoll_create(1024) };
@@ -91,13 +81,19 @@ pub fn epoll_create1(flags: EpollCreateFlags) -> Result<RawFd> {
#[inline]
pub fn epoll_ctl<'a, T>(epfd: RawFd, op: EpollOp, fd: RawFd, event: T) -> Result<()>
- where T: Into<&'a mut EpollEvent>
+ where T: Into<Option<&'a mut EpollEvent>>
{
- let event: &mut EpollEvent = event.into();
- if event as *const EpollEvent == ptr::null() && op != EpollOp::EpollCtlDel {
+ let mut event: Option<&mut EpollEvent> = event.into();
+ if event.is_none() && op != EpollOp::EpollCtlDel {
Err(Error::Sys(Errno::EINVAL))
} else {
- let res = unsafe { libc::epoll_ctl(epfd, op as c_int, fd, &mut event.event) };
+ let res = unsafe {
+ if let Some(ref mut event) = event {
+ libc::epoll_ctl(epfd, op as c_int, fd, &mut event.event)
+ } else {
+ libc::epoll_ctl(epfd, op as c_int, fd, ptr::null_mut())
+ }
+ };
Errno::result(res).map(drop)
}
}