diff --git a/src/sys/socket/mod.rs b/src/sys/socket/mod.rs index b16c54918b..4dec348320 100644 --- a/src/sys/socket/mod.rs +++ b/src/sys/socket/mod.rs @@ -2407,7 +2407,7 @@ pub fn recvfrom( ) -> Result<(usize, Option)> { unsafe { let mut addr = mem::MaybeUninit::::uninit(); - let mut len = mem::size_of_val(&addr) as socklen_t; + let mut len = T::size(); let ret = Errno::result(libc::recvfrom( sockfd, @@ -2418,7 +2418,7 @@ pub fn recvfrom( &mut len as *mut socklen_t, ))? as usize; - Ok((ret, T::from_raw(addr.assume_init().as_ptr(), Some(len)))) + Ok((ret, T::from_raw(addr.as_ptr().cast(), Some(len)))) } } @@ -2521,7 +2521,7 @@ pub fn getpeername(fd: RawFd) -> Result { Errno::result(ret)?; - T::from_raw(addr.assume_init().as_ptr(), Some(len)).ok_or(Errno::EINVAL) + T::from_raw(addr.as_ptr().cast(), Some(len)).ok_or(Errno::EINVAL) } } @@ -2537,7 +2537,7 @@ pub fn getsockname(fd: RawFd) -> Result { Errno::result(ret)?; - T::from_raw(addr.assume_init().as_ptr(), Some(len)).ok_or(Errno::EINVAL) + T::from_raw(addr.as_ptr().cast(), Some(len)).ok_or(Errno::EINVAL) } }