--- a/rust/hg-core/src/dirstate_tree/status.rs Fri Mar 10 18:20:50 2023 +0000
+++ b/rust/hg-core/src/dirstate_tree/status.rs Mon Mar 13 14:15:34 2023 +0000
@@ -433,16 +433,21 @@
return Ok(children_all_have_dirstate_node_or_are_ignored);
}
+ let readdir_succeeded;
let mut fs_entries = if let Ok(entries) = self.read_dir(
directory_hg_path,
&directory_entry.fs_path,
is_at_repo_root,
) {
+ readdir_succeeded = true;
entries
} else {
// Treat an unreadable directory (typically because of insufficient
// permissions) like an empty directory. `self.read_dir` has
// already called `self.io_error` so a warning will be emitted.
+ // We still need to remember that there was an error so that we
+ // know not to cache this result.
+ readdir_succeeded = false;
Vec::new()
};
@@ -495,6 +500,7 @@
Ok(has_dirstate_node_or_is_ignored)
})
.try_reduce(|| true, |a, b| Ok(a && b))
+ .map(|res| res && readdir_succeeded)
}
fn traverse_fs_and_dirstate<'ancestor>(