diff options
| author | xizheyin <xizheyin@smail.nju.edu.cn> | 2025-02-11 01:01:00 +0800 |
|---|---|---|
| committer | xizheyin <xizheyin@smail.nju.edu.cn> | 2025-02-13 19:39:05 +0800 |
| commit | 7e7f5d385694ca345e0b47d8c59c7c966ee60a30 (patch) | |
| tree | 9339f3c947afc2483af7d3cc2f3b30efa2888357 /library/std/src/sys/net/connection/socket.rs | |
| parent | 3cb02729ab3c6583a3b1d1845c5e22b674f04b8d (diff) | |
| download | rust-7e7f5d385694ca345e0b47d8c59c7c966ee60a30.tar.gz rust-7e7f5d385694ca345e0b47d8c59c7c966ee60a30.zip | |
Replace mem::zeroed with mem::MaybeUninit::uninit for large struct in unix
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
Diffstat (limited to 'library/std/src/sys/net/connection/socket.rs')
| -rw-r--r-- | library/std/src/sys/net/connection/socket.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/library/std/src/sys/net/connection/socket.rs b/library/std/src/sys/net/connection/socket.rs index b4f0a783680..ddd74b42615 100644 --- a/library/std/src/sys/net/connection/socket.rs +++ b/library/std/src/sys/net/connection/socket.rs @@ -557,10 +557,13 @@ impl TcpListener { } pub fn accept(&self) -> io::Result<(TcpStream, SocketAddr)> { - let mut storage: c::sockaddr_storage = unsafe { mem::zeroed() }; + // The `accept` function will fill in the storage with the address, + // so we don't need to zero it here. + // reference: https://linux.die.net/man/2/accept4 + let mut storage: mem::MaybeUninit<c::sockaddr_storage> = mem::MaybeUninit::uninit(); let mut len = mem::size_of_val(&storage) as c::socklen_t; - let sock = self.inner.accept((&raw mut storage) as *mut _, &mut len)?; - let addr = unsafe { socket_addr_from_c(&storage, len as usize)? }; + let sock = self.inner.accept(storage.as_mut_ptr() as *mut _, &mut len)?; + let addr = unsafe { socket_addr_from_c(storage.as_ptr(), len as usize)? }; Ok((TcpStream { inner: sock }, addr)) } |
