fread was calling f->read without checking that the file was in
reading mode. this could:
1. crash, if f->read was a null pointer
2. cause unwanted blocking on a terminal already at eof
3. allow reading on a write-only file
l -= k;
}
- if (!l) {
- FUNLOCK(f);
- return nmemb;
- }
-
/* Read the remainder directly */
for (; l; l-=k, dest+=k) {
- k = f->read(f, dest, l);
+ k = __toread(f) ? 0 : f->read(f, dest, l);
if (k+1<=1) {
FUNLOCK(f);
return (len-l)/size;