X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fstdio%2Ffread.c;h=c461256c3b0de4d6af84c0df426710fa121ddc06;hb=96fbcf7d80f469e39d1dd12533f8bb8d13b64fe5;hp=8105fe995d884ffeae8cf4b0492a8baef35e2905;hpb=e3cd6c5c265cd481db6e0c5b529855d99f0bda30;p=musl diff --git a/src/stdio/fread.c b/src/stdio/fread.c index 8105fe99..c461256c 100644 --- a/src/stdio/fread.c +++ b/src/stdio/fread.c @@ -1,8 +1,9 @@ #include "stdio_impl.h" +#include #define MIN(a,b) ((a)<(b) ? (a) : (b)) -size_t fread(void *destv, size_t size, size_t nmemb, FILE *f) +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; @@ -21,14 +22,9 @@ size_t fread(void *destv, size_t size, size_t nmemb, FILE *f) 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;