f->mode |= f->mode-1;
- if (f->rend - f->rpos > 0) {
+ if (f->rpos != f->rend) {
/* First exhaust the buffer. */
k = MIN(f->rend - f->rpos, l);
memcpy(dest, f->rpos, k);
/* Read the remainder directly */
for (; l; l-=k, dest+=k) {
k = __toread(f) ? 0 : f->read(f, dest, l);
- if (k+1<=1) {
+ if (!k) {
FUNLOCK(f);
return (len-l)/size;
}