X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fstdio%2Ffread.c;h=a2116da61370bd829c634353ad6f6fa6732d0d8b;hb=3a23cd06b08054f81bf904c414e0d083a56248f2;hp=33a65f586ead4649ef537ce53780ea7e12fd0e8e;hpb=6e2bb7acf42589fb7130b039d0623e2ca42503dd;p=musl diff --git a/src/stdio/fread.c b/src/stdio/fread.c index 33a65f58..a2116da6 100644 --- a/src/stdio/fread.c +++ b/src/stdio/fread.c @@ -7,12 +7,13 @@ size_t fread(void *restrict destv, size_t size, size_t nmemb, FILE *restrict f) { unsigned char *dest = destv; size_t len = size*nmemb, l = len, k; + if (!size) nmemb = 0; FLOCK(f); 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); @@ -24,7 +25,7 @@ size_t fread(void *restrict destv, size_t size, size_t nmemb, FILE *restrict f) /* 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; }