diff --git a/src/platform/linux/mod.rs b/src/platform/linux/mod.rs index a194e041d5..7d2df45be8 100644 --- a/src/platform/linux/mod.rs +++ b/src/platform/linux/mod.rs @@ -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; } diff --git a/src/platform/redox/mod.rs b/src/platform/redox/mod.rs index 9767de0867..fef69bff68 100644 --- a/src/platform/redox/mod.rs +++ b/src/platform/redox/mod.rs @@ -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 len = out.len(); + 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 {