Skip to content

Commit

Permalink
Rollup merge of rust-lang#89665 - seanyoung:push-empty, r=m-ou-se
Browse files Browse the repository at this point in the history
Ensure that pushing empty path works as before on verbatim paths

Fixes: rust-lang#89658

Signed-off-by: Sean Young <sean@mess.org>
  • Loading branch information
JohnTitor committed Oct 22, 2021
2 parents 0cc8b39 + 1bb399c commit 0d70763
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 1 deletion.
5 changes: 4 additions & 1 deletion library/std/src/path.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1208,6 +1208,9 @@ impl PathBuf {
/// * if `path` has a root but no prefix (e.g., `\windows`), it
/// replaces everything except for the prefix (if any) of `self`.
/// * if `path` has a prefix but no root, it replaces `self`.
/// * if `self` has a verbatim prefix (e.g. `\\?\C:\windows`)
/// and `path` is not empty, the new path is normalized: all references
/// to `.` and `..` are removed.
///
/// # Examples
///
Expand Down Expand Up @@ -1254,7 +1257,7 @@ impl PathBuf {
self.as_mut_vec().truncate(0);

// verbatim paths need . and .. removed
} else if comps.prefix_verbatim() {
} else if comps.prefix_verbatim() && !path.inner.is_empty() {
let mut buf: Vec<_> = comps.collect();
for c in path.components() {
match c {
Expand Down
1 change: 1 addition & 0 deletions library/std/src/path/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1271,6 +1271,7 @@ pub fn test_push() {
tp!(r"\\?\A:\x\y", "/foo", r"\\?\A:\foo");
tp!(r"\\?\A:", r"..\foo\.", r"\\?\A:\foo");
tp!(r"\\?\A:\x\y", r".\foo\.", r"\\?\A:\x\y\foo");
tp!(r"\\?\A:\x\y", r"", r"\\?\A:\x\y\");
}
}

Expand Down

0 comments on commit 0d70763

Please sign in to comment.