diff --git a/src/core/ev.c b/src/core/ev.c index e143b532..ac1d3568 100644 --- a/src/core/ev.c +++ b/src/core/ev.c @@ -2216,6 +2216,10 @@ JanetAsyncStatus ev_machine_read(JanetListenerState *s, JanetAsyncEvent event) { } else #endif { + /* Some handles (not all) read from the offset in lopOverlapped + * if its not set before calling `ReadFile` these streams will always read from offset 0 */ + state->overlapped.Offset = (DWORD) state->bytes_read; + status = ReadFile(s->stream->handle, state->chunk_buf, chunk_size, NULL, &state->overlapped); if (!status && (ERROR_IO_PENDING != WSAGetLastError())) { if (WSAGetLastError() == ERROR_BROKEN_PIPE) { diff --git a/test/suite0000.janet b/test/suite0000.janet index 99b8a8db..08a5371c 100644 --- a/test/suite0000.janet +++ b/test/suite0000.janet @@ -305,9 +305,9 @@ (setdyn :redef true) (def dynamicdef2 0) (defn dynamicdef2-inc [] (+ 1 dynamicdef2)) -(assert (= 1 (dynamicdef2-inc)) "before redefinition with dyn :redefs") +(assert (= 1 (dynamicdef2-inc)) "before redefinition with dyn :redef") (def dynamicdef2 1) -(assert (= 2 (dynamicdef2-inc)) "after redefinition with dyn :redefs") +(assert (= 2 (dynamicdef2-inc)) "after redefinition with dyn :redef") (setdyn :redef nil) # Denormal tables and structs