From 113af694342c50200cfe85d68e9afe6bf4209146 Mon Sep 17 00:00:00 2001 From: Jeremy Soller <jeremy@system76.com> Date: Thu, 18 Jul 2019 20:58:06 -0600 Subject: [PATCH] Remove scheme if closed --- src/scheme/root.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/scheme/root.rs b/src/scheme/root.rs index 7cb5d52c..27cbcecb 100644 --- a/src/scheme/root.rs +++ b/src/scheme/root.rs @@ -309,7 +309,15 @@ impl Scheme for RootScheme { } fn close(&self, file: usize) -> Result<usize> { - self.handles.write().remove(&file); + let handle = self.handles.write().remove(&file).ok_or(Error::new(EBADF))?; + match handle { + Handle::Scheme(inner) => { + let scheme_id = inner.scheme_id.load(Ordering::SeqCst); + let mut schemes = scheme::schemes_mut(); + schemes.remove(scheme_id); + }, + _ => () + } Ok(0) } } -- GitLab