diff --git a/src/filesystem.rs b/src/filesystem.rs index 0eeb602840..2521954b8a 100644 --- a/src/filesystem.rs +++ b/src/filesystem.rs @@ -259,6 +259,13 @@ impl FileSystem { pub fn remove_node(&mut self, mode: u16, name: &str, parent_block: u64) -> Result { if let Some(mut node) = try!(self.find_node(name, parent_block)) { if node.1.mode & Node::MODE_TYPE == mode { + if node.1.is_dir() { + let mut children = Vec::new(); + try!(self.child_nodes(&mut children, node.0)); + if ! children.is_empty() { + return Ok(false); + } + } if try!(self.remove_block(node.0, parent_block)) { node.1 = Node::default(); try!(self.disk.write_at(node.0, &node.1));