authorgravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2026-01-26 23:55:17-08:00
committergravatar for squeek502@hotmail.comRyan Liptak <squeek502@hotmail.com> 2026-01-27 20:48:25+01:00
log29b7214027b0c9bddc4c67587ee75b4adcdab4f8
tree96db647c5d95cf56fbd3d599a071ada0141740b8
parent3729a53eec1951376c01c7e799b439b1a84694b5

Disentangle from `error.CurrentWorkingDirectoryUnlinked`

This error is actually only ever directly returned from `std.posix.getcwd` (and only on POSIX systems, so never on Windows). Its inclusion in almost all of the error sets its currently found in is a leftover from when `std.fs.path.resolve` called `std.process.getCwdAlloc` (https://github.com/ziglang/zig/issues/13613).

6 files changed, 5 insertions(+), 12 deletions(-)

lib/std/posix.zig+1
...@@ -521,6 +521,7 @@ pub fn getppid() pid_t {...@@ -521,6 +521,7 @@ pub fn getppid() pid_t {
521521
522pub const GetCwdError = error{522pub const GetCwdError = error{
523 NameTooLong,523 NameTooLong,
524 /// Not possible on Windows.
524 CurrentWorkingDirectoryUnlinked,525 CurrentWorkingDirectoryUnlinked,
525} || UnexpectedError;526} || UnexpectedError;
526527
lib/std/process.zig+4-3
...@@ -73,7 +73,10 @@ pub fn getCwd(out_buffer: []u8) GetCwdError![]u8 {...@@ -73,7 +73,10 @@ pub fn getCwd(out_buffer: []u8) GetCwdError![]u8 {
73}73}
7474
75// Same as GetCwdError, minus error.NameTooLong + Allocator.Error75// Same as GetCwdError, minus error.NameTooLong + Allocator.Error
76pub const GetCwdAllocError = Allocator.Error || error{CurrentWorkingDirectoryUnlinked} || posix.UnexpectedError;76pub const GetCwdAllocError = Allocator.Error || error{
77 /// Not possible on Windows.
78 CurrentWorkingDirectoryUnlinked,
79} || posix.UnexpectedError;
7780
78/// Caller must free the returned memory.81/// Caller must free the returned memory.
79/// On Windows, the result is encoded as [WTF-8](https://wtf-8.codeberg.page/).82/// On Windows, the result is encoded as [WTF-8](https://wtf-8.codeberg.page/).
...@@ -342,8 +345,6 @@ pub const SpawnError = error{...@@ -342,8 +345,6 @@ pub const SpawnError = error{
342 /// Windows-only. `cwd` or `argv` was provided and it was invalid WTF-8.345 /// Windows-only. `cwd` or `argv` was provided and it was invalid WTF-8.
343 /// https://wtf-8.codeberg.page/346 /// https://wtf-8.codeberg.page/
344 InvalidWtf8,347 InvalidWtf8,
345 /// Windows-only. `cwd` was provided, but the path did not exist when spawning the child process.
346 CurrentWorkingDirectoryUnlinked,
347 /// Windows-only. NUL (U+0000), LF (U+000A), CR (U+000D) are not allowed348 /// Windows-only. NUL (U+0000), LF (U+000A), CR (U+000D) are not allowed
348 /// within arguments when executing a `.bat`/`.cmd` script.349 /// within arguments when executing a `.bat`/`.cmd` script.
349 /// - NUL/LF signifiies end of arguments, so anything afterwards350 /// - NUL/LF signifiies end of arguments, so anything afterwards
lib/std/zig/system.zig-1
...@@ -504,7 +504,6 @@ pub fn resolveTargetQuery(io: Io, query: Target.Query) DetectError!Target {...@@ -504,7 +504,6 @@ pub fn resolveTargetQuery(io: Io, query: Target.Query) DetectError!Target {
504 if (builtin.os.tag == .linux and result.isBionicLibC() and query.os_tag == null and query.android_api_level == null) {504 if (builtin.os.tag == .linux and result.isBionicLibC() and query.os_tag == null and query.android_api_level == null) {
505 result.os.version_range.linux.android = detectAndroidApiLevel(io) catch |err| return switch (err) {505 result.os.version_range.linux.android = detectAndroidApiLevel(io) catch |err| return switch (err) {
506 error.InvalidWtf8,506 error.InvalidWtf8,
507 error.CurrentWorkingDirectoryUnlinked,
508 error.InvalidBatchScriptArg,507 error.InvalidBatchScriptArg,
509 => unreachable, // Windows-only508 => unreachable, // Windows-only
510 error.ApiLevelQueryFailed => |e| e,509 error.ApiLevelQueryFailed => |e| e,
src/Compilation.zig-3
...@@ -1851,7 +1851,6 @@ fn addModuleTableToCacheHash(...@@ -1851,7 +1851,6 @@ fn addModuleTableToCacheHash(
1851) error{1851) error{
1852 OutOfMemory,1852 OutOfMemory,
1853 Unexpected,1853 Unexpected,
1854 CurrentWorkingDirectoryUnlinked,
1855}!void {1854}!void {
1856 assert(zcu.module_roots.count() != 0); // module_roots is populated1855 assert(zcu.module_roots.count() != 0); // module_roots is populated
18571856
...@@ -1919,7 +1918,6 @@ pub const CreateError = error{...@@ -1919,7 +1918,6 @@ pub const CreateError = error{
1919 OutOfMemory,1918 OutOfMemory,
1920 Canceled,1919 Canceled,
1921 Unexpected,1920 Unexpected,
1922 CurrentWorkingDirectoryUnlinked,
1923 /// An error has been stored to `diag`.1921 /// An error has been stored to `diag`.
1924 CreateFail,1922 CreateFail,
1925};1923};
...@@ -2906,7 +2904,6 @@ pub const UpdateError = error{...@@ -2906,7 +2904,6 @@ pub const UpdateError = error{
2906 OutOfMemory,2904 OutOfMemory,
2907 Canceled,2905 Canceled,
2908 Unexpected,2906 Unexpected,
2909 CurrentWorkingDirectoryUnlinked,
2910};2907};
29112908
2912/// Detect changes to source files, perform semantic analysis, and update the output files.2909/// Detect changes to source files, perform semantic analysis, and update the output files.
src/Sema.zig-4
...@@ -13604,10 +13604,6 @@ fn zirEmbedFile(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A...@@ -13604,10 +13604,6 @@ fn zirEmbedFile(sema: *Sema, block: *Block, inst: Zir.Inst.Index) CompileError!A
13604 error.ImportOutsideModulePath => {13604 error.ImportOutsideModulePath => {
13605 return sema.fail(block, operand_src, "embed of file outside package path: '{s}'", .{name});13605 return sema.fail(block, operand_src, "embed of file outside package path: '{s}'", .{name});
13606 },13606 },
13607 error.CurrentWorkingDirectoryUnlinked => {
13608 // TODO: this should be some kind of retryable failure, in case the cwd is put back
13609 return sema.fail(block, operand_src, "unable to resolve '{s}': working directory has been unlinked", .{name});
13610 },
13611 error.OutOfMemory => |e| return e,13607 error.OutOfMemory => |e| return e,
13612 error.Canceled => |e| return e,13608 error.Canceled => |e| return e,
13613 };13609 };
src/Zcu/PerThread.zig-1
...@@ -2388,7 +2388,6 @@ pub fn embedFile(...@@ -2388,7 +2388,6 @@ pub fn embedFile(
2388 OutOfMemory,2388 OutOfMemory,
2389 Canceled,2389 Canceled,
2390 ImportOutsideModulePath,2390 ImportOutsideModulePath,
2391 CurrentWorkingDirectoryUnlinked,
2392}!Zcu.EmbedFile.Index {2391}!Zcu.EmbedFile.Index {
2393 const zcu = pt.zcu;2392 const zcu = pt.zcu;
2394 const gpa = zcu.gpa;2393 const gpa = zcu.gpa;