]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
(_IO_wfile_underflow): Correct not entirely empty external buffer correctly.
authorUlrich Drepper <drepper@redhat.com>
Tue, 25 Jul 2000 18:55:52 +0000 (18:55 +0000)
committerUlrich Drepper <drepper@redhat.com>
Tue, 25 Jul 2000 18:55:52 +0000 (18:55 +0000)
libio/wfileops.c

index 52368abb601a13b7d0b9aedd82480962837664df..45c9120f3426ca17c1a2136a2b3349fe70af9e09 100644 (file)
@@ -179,9 +179,6 @@ _IO_wfile_underflow (fp)
     fp->_IO_read_base = fp->_IO_read_ptr = fp->_IO_read_end =
       fp->_IO_buf_base;
 
-  fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_write_end =
-    fp->_IO_buf_base;
-
   if (fp->_IO_buf_base == NULL)
     {
       /* Maybe we already have a push back pointer.  */
@@ -191,8 +188,14 @@ _IO_wfile_underflow (fp)
          fp->_flags &= ~_IO_IN_BACKUP;
        }
       _IO_doallocbuf (fp);
+
+      fp->_IO_read_base = fp->_IO_read_ptr = fp->_IO_read_end =
+       fp->_IO_buf_base;
     }
 
+  fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_write_end =
+    fp->_IO_buf_base;
+
   if (fp->_wide_data->_IO_buf_base == NULL)
     {
       /* Maybe we already have a push back pointer.  */
@@ -211,11 +214,6 @@ _IO_wfile_underflow (fp)
 
   _IO_switch_to_get_mode (fp);
 
-  fp->_IO_read_base = fp->_IO_read_ptr = fp->_IO_buf_base;
-  fp->_IO_read_end = fp->_IO_buf_base;
-  fp->_IO_write_base = fp->_IO_write_ptr = fp->_IO_write_end
-    = fp->_IO_buf_base;
-
   fp->_wide_data->_IO_read_base = fp->_wide_data->_IO_read_ptr =
     fp->_wide_data->_IO_buf_base;
   fp->_wide_data->_IO_read_end = fp->_wide_data->_IO_buf_base;