authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-01-28 17:59:46-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-01-30 22:03:14-08:00
log7a13d57916aae2840047cc3461aa44c3a72ca546
treeea7407b2f1e2050c74d5d3d204a60ad03a5aa5a3
parent687123a85eaac8b7c290b21c346e8aeb8470dfcb

std.Io.Threaded: add missing check for pending status in batchCancel


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

lib/std/Io/Threaded.zig+2
...@@ -2623,6 +2623,7 @@ fn batchCancel(userdata: ?*anyopaque, b: *Io.Batch) void {...@@ -2623,6 +2623,7 @@ fn batchCancel(userdata: ?*anyopaque, b: *Io.Batch) void {
2623 const metadatas_ptr: [*]WinOpMetadata = @ptrCast(@alignCast(reserved));2623 const metadatas_ptr: [*]WinOpMetadata = @ptrCast(@alignCast(reserved));
2624 const metadatas = metadatas_ptr[0..b.operations.len];2624 const metadatas = metadatas_ptr[0..b.operations.len];
2625 for (metadatas, 0..) |*metadata, op| {2625 for (metadatas, 0..) |*metadata, op| {
2626 if (!metadata.pending) continue;
2626 const done = @atomicLoad(windows.NTSTATUS, &metadata.iosb.u.Status, .acquire) != .PENDING;2627 const done = @atomicLoad(windows.NTSTATUS, &metadata.iosb.u.Status, .acquire) != .PENDING;
2627 if (done) continue;2628 if (done) continue;
2628 switch (operations[op]) {2629 switch (operations[op]) {
...@@ -2633,6 +2634,7 @@ fn batchCancel(userdata: ?*anyopaque, b: *Io.Batch) void {...@@ -2633,6 +2634,7 @@ fn batchCancel(userdata: ?*anyopaque, b: *Io.Batch) void {
2633 }2634 }
2634 }2635 }
2635 for (metadatas) |*metadata| {2636 for (metadatas) |*metadata| {
2637 if (!metadata.pending) continue;
2636 while (@atomicLoad(windows.NTSTATUS, &metadata.iosb.u.Status, .acquire) == .PENDING) {2638 while (@atomicLoad(windows.NTSTATUS, &metadata.iosb.u.Status, .acquire) == .PENDING) {
2637 waitForApcOrAlert();2639 waitForApcOrAlert();
2638 }2640 }