authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-01-22 16:54:32-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-01-27 15:32:34-08:00
log79be6b7ffe6170cd6560637c2eaed0bc8dc96354
tree99454f173b892322f8f8f6c71a3c1de8482ae59e
parente0d9c04e35bf122b362697b543f5fb917a561182

std.Io.Threaded: handle some more error codes from NtReadFile


1 files changed, 6 insertions(+), 1 deletions(-)

lib/std/Io/Threaded.zig+6-1
......@@ -8245,12 +8245,15 @@ fn fileReadStreamingWindows(file: File, data: []const []u8) File.Reader.Error!us
82458245 null, // byte offset
82468246 null, // key
82478247 )) {
8248 .SUCCESS => break :read syscall.finish(),
8248 .SUCCESS, .END_OF_FILE, .PIPE_BROKEN => break :read syscall.finish(),
82498249 .PENDING => break,
82508250 .CANCELLED => {
82518251 try syscall.checkCancel();
82528252 continue;
82538253 },
8254 .INVALID_DEVICE_REQUEST => return syscall.fail(error.IsDir),
8255 .LOCK_NOT_GRANTED => return syscall.fail(error.LockViolation),
8256 .ACCESS_DENIED => return syscall.fail(error.AccessDenied),
82548257 .INVALID_PARAMETER => |err| return syscall.ntstatusBug(err), // streaming read of async mode file
82558258 else => |status| return syscall.unexpectedNtstatus(status),
82568259 }
......@@ -8281,6 +8284,8 @@ fn fileReadStreamingWindows(file: File, data: []const []u8) File.Reader.Error!us
82818284
82828285 switch (io_status_block.u.Status) {
82838286 .SUCCESS, .END_OF_FILE, .PIPE_BROKEN => {},
8287 .INVALID_DEVICE_REQUEST => return error.IsDir,
8288 .LOCK_NOT_GRANTED => return error.LockViolation,
82848289 .ACCESS_DENIED => return error.AccessDenied,
82858290 else => |status| return windows.unexpectedStatus(status),
82868291 }