Browse Source

always flush line-buffered output when filling an input buffer

eck 34 years ago
parent
commit
472ee0cea4
1 changed files with 7 additions and 7 deletions
  1. 7 7
      lang/cem/libcc.ansi/stdio/fillbuf.c

+ 7 - 7
lang/cem/libcc.ansi/stdio/fillbuf.c

@@ -13,6 +13,7 @@ int
 __fillbuf(register FILE *stream)
 {
 	static unsigned char ch[FOPEN_MAX];
+	register int i;
 
 	stream->_count = 0;
 	if (fileno(stream) < 0) return EOF;
@@ -33,13 +34,12 @@ __fillbuf(register FILE *stream)
 			stream->_bufsiz = BUFSIZ;
 		}
 	}
-	if (io_testflag(stream, _IONBF | _IOLBF)) {
-		register int i;
-		for (i = 0; i < FOPEN_MAX; i++) {
-			if (__iotab[i] && io_testflag(__iotab[i], _IOLBF))
-				if (io_testflag(__iotab[i], _IOWRITING))
-					(void) fflush(__iotab[i]);
-		}
+
+	/* flush line-buffered output when filling an input buffer */
+	for (i = 0; i < FOPEN_MAX; i++) {
+		if (__iotab[i] && io_testflag(__iotab[i], _IOLBF))
+			if (io_testflag(__iotab[i], _IOWRITING))
+				(void) fflush(__iotab[i]);
 	}
 
 	if (!stream->_buf) {