diff options
| author | fee1-dead <ent3rm4n@gmail.com> | 2022-03-06 22:35:31 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-06 22:35:31 +1100 |
| commit | 8ea3f236dc45cd4bee67504ae4b1cf64ee5de7ad (patch) | |
| tree | b89494c840d78cf077479294aa42366e6f1cd068 /library/std/src/sys | |
| parent | 02e8839cbd6d5df2019cd22cd42aea48c3aecf2a (diff) | |
| parent | 0421af9a4626638c71d59feebd7a35136d53bfb9 (diff) | |
| download | rust-8ea3f236dc45cd4bee67504ae4b1cf64ee5de7ad.tar.gz rust-8ea3f236dc45cd4bee67504ae4b1cf64ee5de7ad.zip | |
Rollup merge of #94649 - ChrisDenton:unix-absolute-fix, r=Dylan-DPC
Unix path::absolute: Fix leading "." component Testing leading `.` and `..` components were missing from the unix tests. This PR adds them and fixes the leading `.` case. It also fixes the test cases so that they do an exact comparison. This problem reported by ``@axetroy``
Diffstat (limited to 'library/std/src/sys')
| -rw-r--r-- | library/std/src/sys/unix/path.rs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/library/std/src/sys/unix/path.rs b/library/std/src/sys/unix/path.rs index 6d6f4c8b8dc..a98a69e2db8 100644 --- a/library/std/src/sys/unix/path.rs +++ b/library/std/src/sys/unix/path.rs @@ -28,7 +28,8 @@ pub(crate) fn absolute(path: &Path) -> io::Result<PathBuf> { // See 4.13 Pathname Resolution, IEEE Std 1003.1-2017 // https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_13 - let mut components = path.components(); + // Get the components, skipping the redundant leading "." component if it exists. + let mut components = path.strip_prefix(".").unwrap_or(path).components(); let path_os = path.as_os_str().bytes(); let mut normalized = if path.is_absolute() { |
