Remove scheme if closed

This commit is contained in:
Jeremy Soller
2019-07-18 20:58:06 -06:00
parent 4b2c15f0b9
commit 113af69434

View File

@@ -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)
}
}