From 9240881806ef23c504d0312ed7f89f3b5c48aaf3 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 22 Jan 2026 16:54:32 -0800 Subject: [PATCH] std.Io.Threaded: handle some more error codes from NtReadFile --- lib/std/Io/Threaded.zig | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/std/Io/Threaded.zig b/lib/std/Io/Threaded.zig index 3d7520dbe375716629ad6447ba92c2959230289c..36fb28db04b7f85a8498fd9c8d5aa2923978a853 100644 --- a/lib/std/Io/Threaded.zig +++ b/lib/std/Io/Threaded.zig @@ -8388,12 +8388,15 @@ fn fileReadStreamingWindows(file: File, data: []const []u8) File.Reader.Error!us null, // byte offset null, // key )) { - .SUCCESS => break :read syscall.finish(), + .SUCCESS, .END_OF_FILE, .PIPE_BROKEN => break :read syscall.finish(), .PENDING => break, .CANCELLED => { try syscall.checkCancel(); continue; }, + .INVALID_DEVICE_REQUEST => return syscall.fail(error.IsDir), + .LOCK_NOT_GRANTED => return syscall.fail(error.LockViolation), + .ACCESS_DENIED => return syscall.fail(error.AccessDenied), .INVALID_PARAMETER => |err| return syscall.ntstatusBug(err), // streaming read of async mode file else => |status| return syscall.unexpectedNtstatus(status), } @@ -8424,6 +8427,8 @@ fn fileReadStreamingWindows(file: File, data: []const []u8) File.Reader.Error!us switch (io_status_block.u.Status) { .SUCCESS, .END_OF_FILE, .PIPE_BROKEN => {}, + .INVALID_DEVICE_REQUEST => return error.IsDir, + .LOCK_NOT_GRANTED => return error.LockViolation, .ACCESS_DENIED => return error.AccessDenied, else => |status| return windows.unexpectedStatus(status), } -- 2.54.0