diff options
author | Casper Beyer <caspervonb@pm.me> | 2021-02-25 18:16:18 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-25 05:16:18 -0500 |
commit | 687ff2ab14d6a735aa5bf0ec57ef00cfe0c04e4b (patch) | |
tree | f16f3b6aa46090d4edeae4722c76148e00964014 /runtime | |
parent | d26bef21a5aef23ac63a794903d67fede1ae2204 (diff) |
fix(runtime): do not panic on irregular dir entries (#9579)
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/ops/fs.rs | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/runtime/ops/fs.rs b/runtime/ops/fs.rs index d1242b116..629afbfe6 100644 --- a/runtime/ops/fs.rs +++ b/runtime/ops/fs.rs @@ -1022,20 +1022,19 @@ fn op_read_dir_sync( let entries: Vec<_> = std::fs::read_dir(path)? .filter_map(|entry| { let entry = entry.unwrap(); - let file_type = entry.file_type().unwrap(); // Not all filenames can be encoded as UTF-8. Skip those for now. if let Ok(name) = into_string(entry.file_name()) { Some(json!({ "name": name, - "isFile": file_type.is_file(), - "isDirectory": file_type.is_dir(), - "isSymlink": file_type.is_symlink() + "isFile": entry.file_type().map_or(false, |file_type| file_type.is_file()), + "isDirectory": entry.file_type().map_or(false, |file_type| file_type.is_dir()), + "isSymlink": entry.file_type().map_or(false, |file_type| file_type.is_symlink()), })) } else { None } }) - .collect(); + .collect(); Ok(json!({ "entries": entries })) } @@ -1056,25 +1055,24 @@ async fn op_read_dir_async( let entries: Vec<_> = std::fs::read_dir(path)? .filter_map(|entry| { let entry = entry.unwrap(); - let file_type = entry.file_type().unwrap(); // Not all filenames can be encoded as UTF-8. Skip those for now. if let Ok(name) = into_string(entry.file_name()) { Some(json!({ "name": name, - "isFile": file_type.is_file(), - "isDirectory": file_type.is_dir(), - "isSymlink": file_type.is_symlink() + "isFile": entry.file_type().map_or(false, |file_type| file_type.is_file()), + "isDirectory": entry.file_type().map_or(false, |file_type| file_type.is_dir()), + "isSymlink": entry.file_type().map_or(false, |file_type| file_type.is_symlink()), })) } else { None } }) - .collect(); + .collect(); Ok(json!({ "entries": entries })) }) .await - .unwrap() + .unwrap() } #[derive(Deserialize)] |