From dfe2ff06384a8febedcd2b00fb2d1d4c95075953 Mon Sep 17 00:00:00 2001 From: LordMZTE Date: Fri, 5 May 2023 21:34:01 +0200 Subject: [PATCH] std.ChildProcess: fix EBADF when explicitly passing cwd as working directory --- lib/std/child_process.zig | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/std/child_process.zig b/lib/std/child_process.zig index daaa1689bc77..3513fd75b450 100644 --- a/lib/std/child_process.zig +++ b/lib/std/child_process.zig @@ -584,7 +584,10 @@ pub const ChildProcess = struct { } if (self.cwd_dir) |cwd| { - os.fchdir(cwd.fd) catch |err| forkChildErrReport(err_pipe[1], err); + // Calling fchdir with AT_FDCWD will cause an EBADF and would be a no-op anyways. + if (cwd.fd != std.os.AT.FDCWD) { + os.fchdir(cwd.fd) catch |err| forkChildErrReport(err_pipe[1], err); + } } else if (self.cwd) |cwd| { os.chdir(cwd) catch |err| forkChildErrReport(err_pipe[1], err); }