Skip to content

Commit 73bdb7a

Browse files
committed
afile_windows: handle synchronous completion.
1 parent 7213daa commit 73bdb7a

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

io/afile_windows.c

+9-2
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,17 @@ void afile_write(struct afile *a, const void *data, size_t len,
5050
a->write.error = ERROR_IO_PENDING;
5151

5252
ioq_ovl_wait(&a->write.ovl, write_done);
53-
if (!WriteFile(a->handle, data, len, NULL,
53+
if (!WriteFile(a->handle, data, len, &a->write.size,
5454
ioq_ovl_lpo(&a->write.ovl))) {
5555
const syserr_t e = GetLastError();
5656

5757
if (e != ERROR_IO_PENDING) {
5858
a->write.error = e;
5959
ioq_ovl_trigger(&a->write.ovl);
6060
}
61+
} else {
62+
a->write.error = 0;
63+
ioq_ovl_trigger(&a->write.ovl);
6164
}
6265
}
6366

@@ -87,12 +90,16 @@ void afile_read(struct afile *a, void *data, size_t len,
8790
a->read.error = ERROR_IO_PENDING;
8891

8992
ioq_ovl_wait(&a->read.ovl, read_done);
90-
if (!ReadFile(a->handle, data, len, NULL, ioq_ovl_lpo(&a->read.ovl))) {
93+
if (!ReadFile(a->handle, data, len, &a->read.size,
94+
ioq_ovl_lpo(&a->read.ovl))) {
9195
const syserr_t e = GetLastError();
9296

9397
if (e != ERROR_IO_PENDING) {
9498
a->read.error = e;
9599
ioq_ovl_trigger(&a->read.ovl);
96100
}
101+
} else {
102+
a->read.error = 0;
103+
ioq_ovl_trigger(&a->read.ovl);
97104
}
98105
}

0 commit comments

Comments
 (0)