From 7049359c25f392b1440c26dae2d390c4375322c9 Mon Sep 17 00:00:00 2001 From: Jeremy Soller <jeremy@system76.com> Date: Sun, 2 Dec 2018 14:27:02 -0700 Subject: [PATCH] Hack around closedir crashing --- src/header/dirent/mod.rs | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/header/dirent/mod.rs b/src/header/dirent/mod.rs index 8696b9ad0..195dfe9ce 100644 --- a/src/header/dirent/mod.rs +++ b/src/header/dirent/mod.rs @@ -57,12 +57,20 @@ 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 = Sys::close(*dir.file); + let ret = { + let mut dir = Box::from_raw(dir); - // Reference files aren't closed when dropped - dir.file.reference = true; + 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 + }; ret } -- GitLab