From b9203336208378bedb39df124f2e8e64383ef4fc Mon Sep 17 00:00:00 2001 From: Alan Somers Date: Sat, 16 May 2020 15:55:30 -0600 Subject: Apply `repr(transparent)` to several FFI types repr(transparent) is required in order to safely cast between an FFI type and its NewType. This commit applies that attribute to PollFd, EpollEvent, IpMembershipRequest, Ipv6MembershipRequest, TimeVal, and IoVec. Fixes #1241 --- src/sys/epoll.rs | 2 +- src/sys/socket/mod.rs | 4 ++-- src/sys/time.rs | 2 +- src/sys/uio.rs | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src/sys') diff --git a/src/sys/epoll.rs b/src/sys/epoll.rs index fef6f4e3..074a8451 100644 --- a/src/sys/epoll.rs +++ b/src/sys/epoll.rs @@ -43,7 +43,7 @@ libc_bitflags!{ } #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] -#[repr(C)] +#[repr(transparent)] pub struct EpollEvent { event: libc::epoll_event, } diff --git a/src/sys/socket/mod.rs b/src/sys/socket/mod.rs index 1f627614..52768c93 100644 --- a/src/sys/socket/mod.rs +++ b/src/sys/socket/mod.rs @@ -278,7 +278,7 @@ cfg_if! { /// Request for multicast socket operations /// /// This is a wrapper type around `ip_mreq`. -#[repr(C)] +#[repr(transparent)] #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub struct IpMembershipRequest(libc::ip_mreq); @@ -297,7 +297,7 @@ impl IpMembershipRequest { /// Request for ipv6 multicast socket operations /// /// This is a wrapper type around `ipv6_mreq`. -#[repr(C)] +#[repr(transparent)] #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub struct Ipv6MembershipRequest(libc::ipv6_mreq); diff --git a/src/sys/time.rs b/src/sys/time.rs index 06475001..51baa9e1 100644 --- a/src/sys/time.rs +++ b/src/sys/time.rs @@ -245,7 +245,7 @@ impl fmt::Display for TimeSpec { -#[repr(C)] +#[repr(transparent)] #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] pub struct TimeVal(timeval); diff --git a/src/sys/uio.rs b/src/sys/uio.rs index d089084e..7dfeff77 100644 --- a/src/sys/uio.rs +++ b/src/sys/uio.rs @@ -158,7 +158,7 @@ pub fn process_vm_readv(pid: ::unistd::Pid, local_iov: &[IoVec<&mut [u8]>], remo Errno::result(res).map(|r| r as usize) } -#[repr(C)] +#[repr(transparent)] #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] pub struct IoVec(libc::iovec, PhantomData); -- cgit v1.2.3