std::unix::os::home_dir: fallback's optimisation. · rust-lang/rust@bd9ce3e (original) (raw)
File tree
1 file changed
lines changed
- library/std/src/sys/pal/unix
1 file changed
lines changed
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -738,16 +738,17 @@ pub fn home_dir() -> Option { | ||
738 | 738 | n => n as usize, |
739 | 739 | }; |
740 | 740 | let mut buf = Vec::with_capacity(amt); |
741 | -let mut passwd: libc::passwd = mem::zeroed(); | |
741 | +let mut p = mem::MaybeUninit::libc::passwd\::uninit(); | |
742 | 742 | let mut result = ptr::null_mut(); |
743 | 743 | match libc::getpwuid_r( |
744 | 744 | libc::getuid(), |
745 | -&mut passwd, | |
745 | +p.as_mut_ptr(), | |
746 | 746 | buf.as_mut_ptr(), |
747 | 747 | buf.capacity(), |
748 | 748 | &mut result, |
749 | 749 | ) { |
750 | 750 | 0 if !result.is_null() => { |
751 | +let passwd = p.assume_init(); | |
751 | 752 | let ptr = passwd.pw_dir as *const _; |
752 | 753 | let bytes = CStr::from_ptr(ptr).to_bytes().to_vec(); |
753 | 754 | Some(OsStringExt::from_vec(bytes)) |