Skip to content

Commit b245786

Browse files
committed
Auto merge of #1471 - RalfJung:win, r=RalfJung
on Windows, strip the '\\?\' prefix from the canonical path This should help with #74146 (comment)
2 parents 578aebf + 7d9d74e commit b245786

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

cargo-miri/bin.rs

+14-2
Original file line numberDiff line numberDiff line change
@@ -258,8 +258,20 @@ fn setup(subcommand: MiriCommand) {
258258
// Determine where the rust sources are located. `XARGO_RUST_SRC` env var trumps everything.
259259
let rust_src = match std::env::var_os("XARGO_RUST_SRC") {
260260
Some(val) => {
261-
let val = PathBuf::from(val);
262-
val.canonicalize().unwrap_or(val)
261+
let path = PathBuf::from(val);
262+
let path = path.canonicalize().unwrap_or(path);
263+
264+
// On Windows, this produces a path starting with `\\?\`, which xargo cannot deal with.
265+
// Strip that prefix; the resulting path should still be valid.
266+
#[cfg(windows)]
267+
let path = {
268+
let str = path.into_os_string().into_string()
269+
.expect("non-unicode paths are currently not supported");
270+
let str = str.strip_prefix(r"\\?\").map(String::from).unwrap_or(str);
271+
PathBuf::from(str)
272+
};
273+
274+
path
263275
}
264276
None => {
265277
// Check for `rust-src` rustup component.

0 commit comments

Comments
 (0)