aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2018-11-02 12:52:56 -0400
committerRich Felker <dalias@aerifal.cx>2018-11-02 12:52:56 -0400
commit79f653c6bc2881dd6855299c908a442f56cb7c2b (patch)
treec859e6f759efbaa7f434c15d847dd7f28044da8a
parent4a086030264f5cf423ea76453ef721e2c8e2e093 (diff)
fix failure to flush stderr when fflush(0) is called
commit ddc947eda311331959c73dbc4491afcfe2326346 fixed the corresponding bug for exit which was introduced when commit 0b80a7b0404b6e49b0b724e3e3fe0ed5af3b08ef added support for caller-provided buffers, making it possible for stderr to be a buffered stream.
-rw-r--r--src/stdio/fflush.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/stdio/fflush.c b/src/stdio/fflush.c
index 02dae27a..b0094376 100644
--- a/src/stdio/fflush.c
+++ b/src/stdio/fflush.c
@@ -3,11 +3,14 @@
/* stdout.c will override this if linked */
static FILE *volatile dummy = 0;
weak_alias(dummy, __stdout_used);
+weak_alias(dummy, __stderr_used);
int fflush(FILE *f)
{
if (!f) {
- int r = __stdout_used ? fflush(__stdout_used) : 0;
+ int r = 0;
+ if (__stdout_used) r |= fflush(__stdout_used);
+ if (__stderr_used) r |= fflush(__stderr_used);
for (f=*__ofl_lock(); f; f=f->next) {
FLOCK(f);