summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/files.rs11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/files.rs b/src/files.rs
index 80bbb7b..44f5470 100644
--- a/src/files.rs
+++ b/src/files.rs
@@ -838,8 +838,15 @@ impl File {
let mime = mime_guess::get_mime_type(&ext.to_string_lossy());
Some(mime)
} else {
- let mime = tree_magic::from_filepath(&self.path);
- mime::Mime::from_str(&mime).ok()
+ // Fix crash in tree_magic when called on non-regular file
+ self.meta()
+ .ok()
+ .and_then(|meta| {
+ if meta.is_file() {
+ let mime = tree_magic::from_filepath(&self.path);
+ mime::Mime::from_str(&mime).ok()
+ } else { None }
+ })
}
}