performed a read operation already.
[BZ #4359]
* libio/__freading.c (__freading): Don't return true for
- write-only streams.
+ write-only streams. For read/write streams, check whether we
+ performed a read operation already.
2007-10-12 Ulrich Drepper <drepper@redhat.com>
int
__freading (FILE *fp)
{
- return (((fp->_flags & _IO_NO_WRITES)
- || (fp->_flags & _IO_CURRENTLY_PUTTING) == 0)
- && (fp->_flags & _IO_NO_READS) == 0);
+ return ((fp->_flags & _IO_NO_WRITES)
+ || ((fp->_flags & (_IO_CURRENTLY_PUTTING | _IO_NO_READS)) == 0
+ && fp->_IO_read_base != NULL));
}