From 27aea669cb6e8cb9d3a5a8238011ef7863d15f54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jaramago=20Fern=C3=A1ndez?= Date: Fri, 15 May 2020 11:07:17 +0200 Subject: [PATCH] Improved helper function to avoid stalling when max PIPE size is exceeded --- test/tap/tap/utils.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/tap/tap/utils.cpp b/test/tap/tap/utils.cpp index ea029e735..33a0cbde2 100644 --- a/test/tap/tap/utils.cpp +++ b/test/tap/tap/utils.cpp @@ -172,25 +172,25 @@ int execvp(const std::string& cmd, const std::vector& argv, std::st close(CHILD_WRITE_FD); close(CHILD_WRITE_ERR); - waitpid(child_pid, &err, 0); - if (err == 0) { // Read from child’s stdout - count = read(PARENT_READ_FD, buffer, sizeof(buffer) - 1); + count = read(PARENT_READ_FD, buffer, sizeof(buffer)); while (count > 0) { buffer[count] = 0; result_ += buffer; - count = 0; + count = read(PARENT_READ_FD, buffer, sizeof(buffer)); } } else { // Read from child’s stderr - count = read(PARENT_READ_ERR, buffer, sizeof(buffer) - 1); + count = read(PARENT_READ_ERR, buffer, sizeof(buffer)); while (count > 0) { buffer[count] = 0; result_ += buffer; - count = 0; + count = read(PARENT_READ_ERR, buffer, sizeof(buffer)); } } + + waitpid(child_pid, &err, 0); } result = result_;