@@ -324,8 +324,8 @@ impl Pal for Sys {
write!(proc_path, "{}", *file).unwrap();
proc_path.push(0);
- let len = out.len() - 1;
- let read = readlink(CStr::from_bytes_with_nul(&proc_path).unwrap(), &mut out[..len]);
+ let len = out.len();
+ let read = readlink(CStr::from_bytes_with_nul(&proc_path).unwrap(), &mut out[..len-1]);
if read < 0 {
return -1;
}
@@ -622,7 +622,18 @@ impl Pal for Sys {
Err(_) => return -1
};
- e(syscall::fpath(*file as usize, out)) as c_int
+ if out.is_empty() {
+ return 0;
+ }
+
+ let read = e(syscall::fpath(*file as usize, &mut out[..len-1]));
+ if (read as c_int) < 0 {
+ return -1;
+ out[read as usize] = 0;
+ 0
fn rename(oldpath: &CStr, newpath: &CStr) -> c_int {