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-30 12:10:01-08:00
log9240881806ef23c504d0312ed7f89f3b5c48aaf3
tree432c64b1ec61443002a4686b19c5a1e552159baf
parentb47080026508f411c9fbda53d62d15dc5e90c2f9

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


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

lib/std/Io/Threaded.zig+6-1
......@@ -8388,12 +8388,15 @@ fn fileReadStreamingWindows(file: File, data: []const []u8) File.Reader.Error!us
83888388 null, // byte offset
83898389 null, // key
83908390 )) {
8391 .SUCCESS => break :read syscall.finish(),
8391 .SUCCESS, .END_OF_FILE, .PIPE_BROKEN => break :read syscall.finish(),
83928392 .PENDING => break,
83938393 .CANCELLED => {
83948394 try syscall.checkCancel();
83958395 continue;
83968396 },
8397 .INVALID_DEVICE_REQUEST => return syscall.fail(error.IsDir),
8398 .LOCK_NOT_GRANTED => return syscall.fail(error.LockViolation),
8399 .ACCESS_DENIED => return syscall.fail(error.AccessDenied),
83978400 .INVALID_PARAMETER => |err| return syscall.ntstatusBug(err), // streaming read of async mode file
83988401 else => |status| return syscall.unexpectedNtstatus(status),
83998402 }
......@@ -8424,6 +8427,8 @@ fn fileReadStreamingWindows(file: File, data: []const []u8) File.Reader.Error!us
84248427
84258428 switch (io_status_block.u.Status) {
84268429 .SUCCESS, .END_OF_FILE, .PIPE_BROKEN => {},
8430 .INVALID_DEVICE_REQUEST => return error.IsDir,
8431 .LOCK_NOT_GRANTED => return error.LockViolation,
84278432 .ACCESS_DENIED => return error.AccessDenied,
84288433 else => |status| return windows.unexpectedStatus(status),
84298434 }