diff --git a/libs/main/system/piprocess.cpp b/libs/main/system/piprocess.cpp index a21b6930..adfcfac3 100644 --- a/libs/main/system/piprocess.cpp +++ b/libs/main/system/piprocess.cpp @@ -210,18 +210,15 @@ PRIVATE_DEFINITION_START(PIProcess) size_t offset = 0; while (1) { # ifdef WINDOWS - DWORD available = 0; - PeekNamedPipe(pipes[pipe_type][PipeRead], nullptr, 0, nullptr, &available, nullptr); - if (available == 0) { - read_buffer.resize(offset); - break; + PeekNamedPipe(pipes[pipe_type][PipeRead], nullptr, 0, nullptr, &bytes_read, nullptr); + if (bytes_read > 0) { + BOOL ok = ReadFile(pipes[pipe_type][PipeRead], + read_buffer.data(offset), + piMini(available, read_buffer.size() - offset), + &bytes_read, + nullptr); + if (!ok) bytes_read = 0; } - BOOL ok = ReadFile(pipes[pipe_type][PipeRead], - read_buffer.data(offset), - piMini(available, read_buffer.size() - offset), - &bytes_read, - nullptr); - if (!ok) bytes_read = 0; # else bytes_read = ::read(pipes[pipe_type][PipeRead], read_buffer.data(offset), read_buffer.size() - offset); # endif