diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-02-12 09:26:24 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-12 09:26:24 +0100 |
| commit | 475b45f9f161dd6ba15aa86a00fa12d6824c38b7 (patch) | |
| tree | 03bb57041da8164b6eae61406b350e082b40052c | |
| parent | f30f6def0fb2c5d77a5a36e05e84ad60d9e87078 (diff) | |
| parent | 3a1ffead36232a759a4dbdc72a5302a8f8722605 (diff) | |
| download | rust-475b45f9f161dd6ba15aa86a00fa12d6824c38b7.tar.gz rust-475b45f9f161dd6ba15aa86a00fa12d6824c38b7.zip | |
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: Simon Chopin <simon.chopin@canonical.com>
| -rw-r--r-- | src/tools/linkchecker/main.rs | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/tools/linkchecker/main.rs b/src/tools/linkchecker/main.rs index 94e82e3d9f7..46daaf42883 100644 --- a/src/tools/linkchecker/main.rs +++ b/src/tools/linkchecker/main.rs @@ -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); |
