about summary refs log tree commit diff
path: root/src/stdio
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 /src/stdio
parent4a086030264f5cf423ea76453ef721e2c8e2e093 (diff)
downloadmusl-79f653c6bc2881dd6855299c908a442f56cb7c2b.tar.gz
musl-79f653c6bc2881dd6855299c908a442f56cb7c2b.tar.xz
musl-79f653c6bc2881dd6855299c908a442f56cb7c2b.zip
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.
Diffstat (limited to 'src/stdio')
-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);