authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-10-28 07:11:52-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-10-29 06:20:52-07:00
log030b630829d3fe9c6c387a9bf68ae65ddb3b053c
treebe9e6955a3f9307d44c4a7bca46011a86b64ff47
parentc4dc7d7c3d4eade5f1092eb5c4af9bf45e3e2fda

std.Io.Threaded: fix EBADF error code on wasm32-wasi -lc when reading


1 files changed, 9 insertions(+), 2 deletions(-)

lib/std/Io/Threaded.zig+9-2
...@@ -2253,6 +2253,7 @@ const dirOpenDir = switch (native_os) {...@@ -2253,6 +2253,7 @@ const dirOpenDir = switch (native_os) {
2253 else => dirOpenDirPosix,2253 else => dirOpenDirPosix,
2254};2254};
22552255
2256/// This function is also used for WASI when libc is linked.
2256fn dirOpenDirPosix(2257fn dirOpenDirPosix(
2257 userdata: ?*anyopaque,2258 userdata: ?*anyopaque,
2258 dir: Io.Dir,2259 dir: Io.Dir,
...@@ -2551,7 +2552,10 @@ fn fileReadStreamingPosix(userdata: ?*anyopaque, file: Io.File, data: [][]u8) Io...@@ -2551,7 +2552,10 @@ fn fileReadStreamingPosix(userdata: ?*anyopaque, file: Io.File, data: [][]u8) Io
2551 .FAULT => |err| return errnoBug(err),2552 .FAULT => |err| return errnoBug(err),
2552 .SRCH => return error.ProcessNotFound,2553 .SRCH => return error.ProcessNotFound,
2553 .AGAIN => return error.WouldBlock,2554 .AGAIN => return error.WouldBlock,
2554 .BADF => |err| return errnoBug(err), // File descriptor used after closed.2555 .BADF => |err| {
2556 if (native_os == .wasi) return error.NotOpenForReading; // File operation on directory.
2557 return errnoBug(err); // File descriptor used after closed.
2558 },
2555 .IO => return error.InputOutput,2559 .IO => return error.InputOutput,
2556 .ISDIR => return error.IsDir,2560 .ISDIR => return error.IsDir,
2557 .NOBUFS => return error.SystemResources,2561 .NOBUFS => return error.SystemResources,
...@@ -2648,7 +2652,10 @@ fn fileReadPositionalPosix(userdata: ?*anyopaque, file: Io.File, data: [][]u8, o...@@ -2648,7 +2652,10 @@ fn fileReadPositionalPosix(userdata: ?*anyopaque, file: Io.File, data: [][]u8, o
2648 .FAULT => |err| return errnoBug(err),2652 .FAULT => |err| return errnoBug(err),
2649 .SRCH => return error.ProcessNotFound,2653 .SRCH => return error.ProcessNotFound,
2650 .AGAIN => return error.WouldBlock,2654 .AGAIN => return error.WouldBlock,
2651 .BADF => |err| return errnoBug(err), // File descriptor used after closed.2655 .BADF => |err| {
2656 if (native_os == .wasi) return error.NotOpenForReading; // File operation on directory.
2657 return errnoBug(err); // File descriptor used after closed.
2658 },
2652 .IO => return error.InputOutput,2659 .IO => return error.InputOutput,
2653 .ISDIR => return error.IsDir,2660 .ISDIR => return error.IsDir,
2654 .NOBUFS => return error.SystemResources,2661 .NOBUFS => return error.SystemResources,