aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Build/Step/Run.zig
diff options
context:
space:
mode:
authorRyan Liptak <squeek502@hotmail.com>2025-11-05 20:17:07 -0800
committerRyan Liptak <squeek502@hotmail.com>2025-11-06 03:40:33 -0800
commite0898f4e055d078020d14eefa14ea5879e070da0 (patch)
treed5d2f7c743014320e4318ec6b14e9d8dce11ae21 /lib/std/Build/Step/Run.zig
parent416bf1de47154ba781082163f8a3509fa3916482 (diff)
downloadzig-e0898f4e055d078020d14eefa14ea5879e070da0.tar.gz
zig-e0898f4e055d078020d14eefa14ea5879e070da0.zip
Step.Run: Fix for `convertPathArg` when cwd and path args are on different drives
Fixes #25805
Diffstat (limited to 'lib/std/Build/Step/Run.zig')
-rw-r--r--lib/std/Build/Step/Run.zig7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/std/Build/Step/Run.zig b/lib/std/Build/Step/Run.zig
index eb1de3dd3b..2143cf9b02 100644
--- a/lib/std/Build/Step/Run.zig
+++ b/lib/std/Build/Step/Run.zig
@@ -746,7 +746,12 @@ fn convertPathArg(run: *Run, path: Build.Cache.Path) []const u8 {
// Convert it from relative to *our* cwd, to relative to the *child's* cwd.
break :rel std.fs.path.relative(b.graph.arena, child_cwd, path_str) catch @panic("OOM");
};
- assert(!std.fs.path.isAbsolute(child_cwd_rel));
+ // Not every path can be made relative, e.g. if the path and the child cwd are on different
+ // disk designators on Windows. In that case, `relative` will return an absolute path which we can
+ // just return.
+ if (std.fs.path.isAbsolute(child_cwd_rel)) {
+ return child_cwd_rel;
+ }
// We're not done yet. In some cases this path must be prefixed with './':
// * On POSIX, the executable name cannot be a single component like 'foo'
// * Some executables might treat a leading '-' like a flag, which we must avoid