Sfoglia il codice sorgente

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.
Rich Felker 6 anni fa
parent
commit
79f653c6bc
1 ha cambiato i file con 4 aggiunte e 1 eliminazioni
  1. 4 1
      src/stdio/fflush.c

+ 4 - 1
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);