std::unix::os::home_dir: fallback's optimisation. · rust-lang/rust@bd9ce3e

File tree

1 file changed

lines changed

  • library/std/src/sys/pal/unix

1 file changed

lines changed

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))