diff options
author | Sendil Kumar <sendilkumarn@live.com> | 2019-08-22 21:44:16 +0200 |
---|---|---|
committer | Sendil Kumar <sendilkumarn@live.com> | 2019-08-22 21:44:16 +0200 |
commit | 07e2ea98d8b97bbf33ce96ef4dd1a1d6929e5773 (patch) | |
tree | 3ce9d8fab6d2bd1a4b456b37bf488638181c5665 /src/fcntl.rs | |
parent | 3d5eadde40c8760c61afe5c1912247efd1b53453 (diff) | |
download | nix-07e2ea98d8b97bbf33ce96ef4dd1a1d6929e5773.zip |
fix review comments
Diffstat (limited to 'src/fcntl.rs')
-rw-r--r-- | src/fcntl.rs | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/fcntl.rs b/src/fcntl.rs index 2adbb6ab..1ef26271 100644 --- a/src/fcntl.rs +++ b/src/fcntl.rs @@ -188,19 +188,21 @@ fn wrap_readlink_result(v: &mut Vec<u8>, res: ssize_t) -> Result<OsString> { } pub fn readlink<'a, P: ?Sized + NixPath>(path: &P) -> Result<OsString> { - let mut v = vec![0u8; libc::PATH_MAX as usize]; + let len = libc::PATH_MAX as usize; + let mut v = Vec::with_capacity(len); let res = path.with_nix_path(|cstr| { - unsafe { libc::readlink(cstr.as_ptr(), v.as_mut_ptr() as *mut c_char, v.len() as size_t) } + unsafe { libc::readlink(cstr.as_ptr(), v.as_mut_ptr() as *mut c_char, len as size_t) } })?; - + wrap_readlink_result(&mut v, res) } pub fn readlinkat<'a, P: ?Sized + NixPath>(dirfd: RawFd, path: &P) -> Result<OsString> { - let mut v = vec![0u8; libc::PATH_MAX as usize]; + let len = libc::PATH_MAX as usize; + let mut v = Vec::with_capacity(len); let res = path.with_nix_path(|cstr| { - unsafe { libc::readlinkat(dirfd, cstr.as_ptr(), v.as_mut_ptr() as *mut c_char, v.len() as size_t) } + unsafe { libc::readlinkat(dirfd, cstr.as_ptr(), v.as_mut_ptr() as *mut c_char, len as size_t) } })?; wrap_readlink_result(&mut v, res) |