From 49e3b387acb1a3489b44d2ed2afddfd857a2860c Mon Sep 17 00:00:00 2001 From: davidot Date: Tue, 13 Sep 2022 23:01:41 +0200 Subject: [PATCH] test-test262: Close the output file stream after writing Without this the runner is waiting for new tests which will never come and test-test262 is waiting for output which never comes since the runner is blocked. Also finish off a comment, and make the variables follow serenity style. --- Tests/LibJS/test-test262.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Tests/LibJS/test-test262.cpp b/Tests/LibJS/test-test262.cpp index e94bafdfe8d..8dad8720731 100644 --- a/Tests/LibJS/test-test262.cpp +++ b/Tests/LibJS/test-test262.cpp @@ -161,12 +161,12 @@ public: bool write_lines(Span lines) { // It's possible the process dies before we can write all the tests - // to the stdin. So make sure that - struct sigaction act { }; - struct sigaction oldAct; - act.sa_flags = 0; - act.sa_handler = SIG_IGN; - if (sigaction(SIGPIPE, &act, &oldAct) < 0) { + // to the stdin. So make sure that we don't crash but just stop writing. + struct sigaction action_handler { }; + struct sigaction old_action_handler; + action_handler.sa_flags = 0; + action_handler.sa_handler = SIG_IGN; + if (sigaction(SIGPIPE, &action_handler, &old_action_handler) < 0) { perror("sigaction"); return false; } @@ -176,8 +176,11 @@ public: break; } + // Ensure that the input stream ends here, whether we were able to write all lines or not + m_output->close(); + // It's not really a problem if this signal failed - if (sigaction(SIGPIPE, &oldAct, nullptr) < 0) + if (sigaction(SIGPIPE, &old_action_handler, nullptr) < 0) perror("sigaction"); return true;