diff --git a/libs/main/system/piprocess.cpp b/libs/main/system/piprocess.cpp index c551b48c..a21b6930 100644 --- a/libs/main/system/piprocess.cpp +++ b/libs/main/system/piprocess.cpp @@ -212,14 +212,16 @@ PRIVATE_DEFINITION_START(PIProcess) # ifdef WINDOWS DWORD available = 0; PeekNamedPipe(pipes[pipe_type][PipeRead], nullptr, 0, nullptr, &available, nullptr); - if (available > 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; + if (available == 0) { + read_buffer.resize(offset); + break; } + 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