未验证 提交 475b45f9 编写于 作者: M Matthias Krüger 提交者: GitHub

Rollup merge of #93897 - schopin-pro:linkchecker-symlink, r=Mark-Simulacrum

linkchecker: fix panic on directory symlinks

In Debian and Ubuntu, there are some patches that change the rustc/fonts
directory to a symlink to the system fonts. This triggers a latent bug
in linkchecker, as the DirEntry filetype isn't a dir but later on the
file itself, when opened, is one, triggering an unreachable!() clause.

This patch fixes the situation by using std::fs::metadata, which goes
through symlinks.

I'd have added a test case but `tidy` doesn't seem to like symlinks, and
moreover I'm not sure how Git deals with symlinks on Windows.
Signed-off-by: NSimon Chopin <simon.chopin@canonical.com>
......@@ -182,8 +182,9 @@ impl Checker {
fn walk(&mut self, dir: &Path, report: &mut Report) {
for entry in t!(dir.read_dir()).map(|e| t!(e)) {
let path = entry.path();
let kind = t!(entry.file_type());
if kind.is_dir() {
// Goes through symlinks
let metadata = t!(fs::metadata(&path));
if metadata.is_dir() {
self.walk(&path, report);
} else {
self.check(&path, report);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册