about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--libio/__freading.c7
2 files changed, 10 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 6b893679ef..3a16e6ac8f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-10-13  Ulrich Drepper  <drepper@redhat.com>
+
+	[BZ #4359]
+	* libio/__freading.c (__freading): Don't return true for
+	write-only streams.
+
 2007-10-12  Ulrich Drepper  <drepper@redhat.com>
 
 	* locale/programs/repertoire.c (repertoire_read): Always free
diff --git a/libio/__freading.c b/libio/__freading.c
index 37200bba78..7eca27b010 100644
--- a/libio/__freading.c
+++ b/libio/__freading.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2002, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -21,6 +21,7 @@
 int
 __freading (FILE *fp)
 {
-  return ((fp->_flags & _IO_NO_WRITES)
-	  || (fp->_flags & _IO_CURRENTLY_PUTTING) == 0);
+  return (((fp->_flags & _IO_NO_WRITES)
+	   || (fp->_flags & _IO_CURRENTLY_PUTTING) == 0)
+	  && (fp->_flags & _IO_NO_READS) == 0);
 }