Skip to content

Commit aaf17e4

Browse files
committed
fix: improve handling of byte waiting in read implementation
1 parent 7ad92df commit aaf17e4

1 file changed

Lines changed: 8 additions & 8 deletions

File tree

‎src/detail/read_impl.hpp‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,16 @@ inline auto readImpl(int64_t handle, void *buffer, int buffer_size, int timeout_
5959

6060
while (total_read < buffer_size)
6161
{
62-
int waiting = 0;
63-
if (!bytesWaiting(context.handle, &waiting))
62+
int chunk_size = 1;
63+
if (terminator_size <= 0)
6464
{
65-
return failWin32<int>(callback, static_cast<StatusCodeValue>(StatusCode::Control::kGetStateError));
66-
}
65+
int waiting = 0;
66+
if (!bytesWaiting(context.handle, &waiting))
67+
{
68+
return failWin32<int>(callback, static_cast<StatusCodeValue>(StatusCode::Control::kGetStateError));
69+
}
6770

68-
int chunk_size = waiting > 0 ? std::min(waiting, buffer_size - total_read) : 1;
69-
if (terminator_size > 0)
70-
{
71-
chunk_size = std::min(chunk_size, kTerminatedReadChunkSize);
71+
chunk_size = waiting > 0 ? std::min(waiting, buffer_size - total_read) : 1;
7272
}
7373

7474
const int current_timeout = readTimeout(timeout_ms, multiplier, total_read == 0, terminator_size > 0);

0 commit comments

Comments
 (0)