| From 9b36993794c1de733c521b2477370c874c07b617 Mon Sep 17 00:00:00 2001 |
| From: Richard Purdie <richard.purdie@linuxfoundation.org> |
| Date: Thu, 4 Apr 2019 14:18:55 +0100 |
| Subject: [PATCH 1/3] utils: Ensure stdout/stderr are flushed |
| |
| There is no guarantee that the data written with fwrite will be flushed to the |
| buffer. If stdout and stderr are the same thing, this could lead to interleaved |
| writes. The common case is stdout output so flush the output pipes when writing to |
| stderr. Also flush stdout before the function returns. |
| |
| Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> |
| Upstream-Status: Pending [code being tested] |
| --- |
| utils.c | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| diff --git a/utils.c b/utils.c |
| index 504df0b..3ceb342 100644 |
| --- a/utils.c |
| +++ b/utils.c |
| @@ -295,8 +295,11 @@ wait_child(const char *ptest_dir, const char *run_ptest, pid_t pid, |
| } |
| |
| if (pfds[1].revents != 0) { |
| - while ((n = read(fds[1], buf, WAIT_CHILD_BUF_MAX_SIZE)) > 0) |
| + while ((n = read(fds[1], buf, WAIT_CHILD_BUF_MAX_SIZE)) > 0) { |
| + fflush(fps[0]); |
| fwrite(buf, n, 1, fps[1]); |
| + fflush(fps[1]); |
| + } |
| } |
| |
| clock_gettime(clock, &sentinel); |
| @@ -315,7 +318,7 @@ wait_child(const char *ptest_dir, const char *run_ptest, pid_t pid, |
| break; |
| } |
| |
| - |
| + fflush(fps[0]); |
| return status; |
| } |
| |
| -- |
| 2.17.1 |
| |