Deal with invalid UTF-8 from `gai_strerror` · model-checking/verify-rust-std@321dbf8

@@ -4,7 +4,6 @@ use crate::io::{self, BorrowedBuf, BorrowedCursor, IoSlice, IoSliceMut};

44

use crate::mem;

55

use crate::net::{Shutdown, SocketAddr};

66

use crate::os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, RawFd};

7-

use crate::str;

87

use crate::sys::fd::FileDesc;

98

use crate::sys::pal::unix::IsMinusOne;

109

use crate::sys_common::net::{getsockopt, setsockopt, sockaddr_to_addr};

@@ -47,7 +46,9 @@ pub fn cvt_gai(err: c_int) -> io::Result<()> {

47464847

#[cfg(not(target_os = "espidf"))]

4948

let detail = unsafe {

50-

str::from_utf8(CStr::from_ptr(libc::gai_strerror(err)).to_bytes()).unwrap().to_owned()

49+

// We can't always expect a UTF-8 environment. When we don't get that luxury,

50+

// it's better to give a low-quality error message than none at all.

51+

CStr::from_ptr(libc::gai_strerror(err)).to_string_lossy()

5152

};

52535354

#[cfg(target_os = "espidf")]