From 41c35f2ffe58a5b90b63256a199d674696f8a743 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Mon, 24 Oct 2022 00:48:10 -0400 Subject: [PATCH] * src/output.c (_outputs): Don't use invalid output sync FDs Just write to stdout/stderr in this situation. --- src/output.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/output.c b/src/output.c index fa13e9c3..a88f537a 100644 --- a/src/output.c +++ b/src/output.c @@ -51,20 +51,24 @@ unsigned int stdio_traced = 0; static void _outputs (struct output *out, int is_err, const char *msg) { - if (! out || ! out->syncout) - { - FILE *f = is_err ? stderr : stdout; - fputs (msg, f); - fflush (f); - } - else + FILE *f; + + if (out && out->syncout) { int fd = is_err ? out->err : out->out; - size_t len = strlen (msg); - int r; - EINTRLOOP (r, lseek (fd, 0, SEEK_END)); - writebuf (fd, msg, len); + if (fd != OUTPUT_NONE) + { + size_t len = strlen (msg); + int r; + EINTRLOOP (r, lseek (fd, 0, SEEK_END)); + writebuf (fd, msg, len); + return; + } } + + f = is_err ? stderr : stdout; + fputs (msg, f); + fflush (f); } /* Write a message indicating that we've just entered or -- 2.47.3