Normalize MIRI_TEMP before using it

This commit is contained in:
Aaron Hill 2020-10-04 16:26:09 -04:00
parent 9e6320f101
commit 4eea02e725
No known key found for this signature in database
GPG key ID: B4087E510E98B164

View file

@ -29,7 +29,19 @@ fn main() {
}
fn tmp() -> PathBuf {
std::env::var("MIRI_TEMP").map(PathBuf::from).unwrap_or_else(|_| std::env::temp_dir())
std::env::var("MIRI_TEMP")
.map(|tmp| {
// MIRI_TEMP is set outside of our emulated
// program, so it may have path separators that don't
// correspond to our target platform. We normalize them here
// before constructing a `PathBuf`
#[cfg(windows)]
return PathBuf::from(tmp.replace("/", "\\"));
#[cfg(not(windows))]
return PathBuf::from(tmp.replace("\\", "/"));
}).unwrap_or_else(|_| std::env::temp_dir())
}
/// Prepare: compute filename and make sure the file does not exist.