Skip to content

Commit bd9ce3e

Browse files
committed
std::unix::os::home_dir: fallback's optimisation.
we're using a guaranteed initialised field on success.
1 parent d4cc01c commit bd9ce3e

File tree

1 file changed

+3
-2
lines changed
  • library/std/src/sys/pal/unix

1 file changed

+3
-2
lines changed

library/std/src/sys/pal/unix/os.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -738,16 +738,17 @@ pub fn home_dir() -> Option<PathBuf> {
738738
n => n as usize,
739739
};
740740
let mut buf = Vec::with_capacity(amt);
741-
let mut passwd: libc::passwd = mem::zeroed();
741+
let mut p = mem::MaybeUninit::<libc::passwd>::uninit();
742742
let mut result = ptr::null_mut();
743743
match libc::getpwuid_r(
744744
libc::getuid(),
745-
&mut passwd,
745+
p.as_mut_ptr(),
746746
buf.as_mut_ptr(),
747747
buf.capacity(),
748748
&mut result,
749749
) {
750750
0 if !result.is_null() => {
751+
let passwd = p.assume_init();
751752
let ptr = passwd.pw_dir as *const _;
752753
let bytes = CStr::from_ptr(ptr).to_bytes().to_vec();
753754
Some(OsStringExt::from_vec(bytes))

0 commit comments

Comments
 (0)