diff --git a/src/platform/redox/mod.rs b/src/platform/redox/mod.rs
index 9da86dd9d9441c73abb508f877e5fdf484f26549..60976217f6a120995ca02c99cfd8fcffb2779f10 100644
--- a/src/platform/redox/mod.rs
+++ b/src/platform/redox/mod.rs
@@ -283,11 +283,12 @@ impl Pal for Sys {
     }
 
     fn fchdir(fd: c_int) -> c_int {
-        let path: &mut [u8] = &mut [0; 4096];
-        if e(syscall::fpath(fd as usize, path)) == !0 {
+        let mut buf = [0; 4096];
+        let res = e(syscall::fpath(fd as usize, &mut buf));
+        if res == !0 {
             !0
         } else {
-            e(syscall::chdir(path)) as c_int
+            e(syscall::chdir(&buf[..res])) as c_int
         }
     }