| ... | @@ -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 | } |