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...@@ -8388,12 +8388,15 @@ fn fileReadStreamingWindows(file: File, data: []const []u8) File.Reader.Error!us
8388 null, // byte offset8388 null, // byte offset
8389 null, // key8389 null, // key
8390 )) {8390 )) {
8391 .SUCCESS => break :read syscall.finish(),8391 .SUCCESS, .END_OF_FILE, .PIPE_BROKEN => break :read syscall.finish(),
8392 .PENDING => break,8392 .PENDING => break,
8393 .CANCELLED => {8393 .CANCELLED => {
8394 try syscall.checkCancel();8394 try syscall.checkCancel();
8395 continue;8395 continue;
8396 },8396 },
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),
8397 .INVALID_PARAMETER => |err| return syscall.ntstatusBug(err), // streaming read of async mode file8400 .INVALID_PARAMETER => |err| return syscall.ntstatusBug(err), // streaming read of async mode file
8398 else => |status| return syscall.unexpectedNtstatus(status),8401 else => |status| return syscall.unexpectedNtstatus(status),
8399 }8402 }
...@@ -8424,6 +8427,8 @@ fn fileReadStreamingWindows(file: File, data: []const []u8) File.Reader.Error!us...@@ -8424,6 +8427,8 @@ fn fileReadStreamingWindows(file: File, data: []const []u8) File.Reader.Error!us
84248427
8425 switch (io_status_block.u.Status) {8428 switch (io_status_block.u.Status) {
8426 .SUCCESS, .END_OF_FILE, .PIPE_BROKEN => {},8429 .SUCCESS, .END_OF_FILE, .PIPE_BROKEN => {},
8430 .INVALID_DEVICE_REQUEST => return error.IsDir,
8431 .LOCK_NOT_GRANTED => return error.LockViolation,
8427 .ACCESS_DENIED => return error.AccessDenied,8432 .ACCESS_DENIED => return error.AccessDenied,
8428 else => |status| return windows.unexpectedStatus(status),8433 else => |status| return windows.unexpectedStatus(status),
8429 }8434 }