summaryrefslogtreecommitdiff
path: root/src/sys
diff options
context:
space:
mode:
authorAlan Somers <asomers@gmail.com>2020-05-16 15:55:30 -0600
committerAlan Somers <asomers@gmail.com>2020-05-16 15:55:30 -0600
commitb9203336208378bedb39df124f2e8e64383ef4fc (patch)
treea53cc4b3eaee8dc3de496857785438780e0686c0 /src/sys
parent465a8f73134de0eec1bf28c749cc89cece0c7a1a (diff)
downloadnix-b9203336208378bedb39df124f2e8e64383ef4fc.zip
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
Diffstat (limited to 'src/sys')
-rw-r--r--src/sys/epoll.rs2
-rw-r--r--src/sys/socket/mod.rs4
-rw-r--r--src/sys/time.rs2
-rw-r--r--src/sys/uio.rs2
4 files changed, 5 insertions, 5 deletions
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<T>(libc::iovec, PhantomData<T>);