Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 18 Aug 1999 23:05:23 +0000 (23:05 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 18 Aug 1999 23:05:23 +0000 (23:05 +0000)
* libio/fileops.c (_IO_file_xsgetn): Allocate buffer if none is
allocated so far.  [PR libc/1261].

ChangeLog
libio/fileops.c

index eb67f1d..caa5a5a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 1999-08-18  Ulrich Drepper  <drepper@cygnus.com>
 
+       * libio/fileops.c (_IO_file_xsgetn): Allocate buffer if none is
+       allocated so far.  [PR libc/1261].
+
        * math/libm-test.c (j0_test): Adjust deltas for m68k.
        (jn_test): Likewise.
 
index decb9d7..7c6e271 100644 (file)
@@ -849,6 +849,17 @@ _IO_file_xsgetn (fp, data, n)
 
   want = n;
 
+  if (fp->_IO_buf_base == NULL)
+    {
+      /* Maybe we already have a push back pointer.  */
+      if (fp->_IO_save_base != NULL)
+       {
+         free (fp->_IO_save_base);
+         fp->_flags &= ~_IO_IN_BACKUP;
+       }
+      _IO_doallocbuf (fp);
+    }
+
   while (want > 0)
     {
       have = fp->_IO_read_end - fp->_IO_read_ptr;