diff --git a/src/header/dirent/mod.rs b/src/header/dirent/mod.rs index 195dfe9cee8553d8d9564a5596b83cb340f34131..8696b9ad01669fed2e3a1c39ad3b66f610747d4e 100644 --- a/src/header/dirent/mod.rs +++ b/src/header/dirent/mod.rs @@ -57,20 +57,12 @@ pub unsafe extern "C" fn opendir(path: *const c_char) -> *mut DIR { #[no_mangle] pub unsafe extern "C" fn closedir(dir: *mut DIR) -> c_int { + let mut dir = Box::from_raw(dir); - let ret = { - let mut dir = Box::from_raw(dir); + let ret = Sys::close(*dir.file); - let ret = Sys::close(*dir.file); - - // Reference files aren't closed when dropped - dir.file.reference = true; - - //TODO: find out why dropping dir can crash - mem::forget(dir); - - ret - }; + // Reference files aren't closed when dropped + dir.file.reference = true; ret }