diff packages/language/c/libc/current/src/stdio/input/fgetc.cxx @ 92:08ffab08d2ee ecos-sw-2000-05-26

Merge from eCos master repository on 2000-05-26-07:47:03-BST
author jlarmour
date Fri, 26 May 2000 13:46:34 +0000
parents bf00f99aec69
children
line wrap: on
line diff
--- a/packages/language/c/libc/current/src/stdio/input/fgetc.cxx
+++ b/packages/language/c/libc/current/src/stdio/input/fgetc.cxx
@@ -77,14 +77,14 @@ externC int
 
     err = real_stream->read( &c, 1, &bytes_read );
 
-    // FIXME: Why do we need this?
-    if (!err && !bytes_read)  // if no err, but nothing to read, try again
-    {
-        real_stream->refill_read_buffer();
-        err = real_stream->read( &c, 1, &bytes_read );
+    // Why do we need this?  Because the buffer might be empty.
+    if (!err && !bytes_read) { // if no err, but nothing to read, try again
+        err = real_stream->refill_read_buffer();
+        if ( !err )
+            err = real_stream->read( &c, 1, &bytes_read );
     } // if
 
-    CYG_ASSERT( 1 == bytes_read, "Didn't read 1 byte!" );
+    CYG_ASSERT( (ENOERR != err) || (1 == bytes_read), "Didn't read 1 byte!" );
 
     if (err)
     {