OSDN Git Service

fix failure to flush stderr when fflush(0) is called
authorRich Felker <dalias@aerifal.cx>
Fri, 2 Nov 2018 16:52:56 +0000 (12:52 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 2 Nov 2018 16:52:56 +0000 (12:52 -0400)
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.

src/stdio/fflush.c

index 02dae27..b009437 100644 (file)
@@ -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);