X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fstdio%2Ffwrite.c;h=7a567b2c55a94b30288444bd93f6fc48fff7e433;hb=54316a52b2119edf73e274c8b4f25d7757f7b4d3;hp=02908c4b9ad39176d4b5f6591a0b3d72518d20d5;hpb=e3cd6c5c265cd481db6e0c5b529855d99f0bda30;p=musl diff --git a/src/stdio/fwrite.c b/src/stdio/fwrite.c index 02908c4b..7a567b2c 100644 --- a/src/stdio/fwrite.c +++ b/src/stdio/fwrite.c @@ -1,6 +1,7 @@ #include "stdio_impl.h" +#include -size_t __fwritex(const unsigned char *s, size_t l, FILE *f) +size_t __fwritex(const unsigned char *restrict s, size_t l, FILE *restrict f) { size_t i=0; @@ -12,8 +13,8 @@ size_t __fwritex(const unsigned char *s, size_t l, FILE *f) /* Match /^(.*\n|)/ */ for (i=l; i && s[i-1] != '\n'; i--); if (i) { - if (f->write(f, s, i) < i) - return i; + size_t n = f->write(f, s, i); + if (n < i) return n; s += i; l -= i; } @@ -24,14 +25,14 @@ size_t __fwritex(const unsigned char *s, size_t l, FILE *f) return l+i; } -size_t fwrite(const void *src, size_t size, size_t nmemb, FILE *f) +size_t fwrite(const void *restrict src, size_t size, size_t nmemb, FILE *restrict f) { size_t k, l = size*nmemb; - if (!l) return l; + if (!size) nmemb = 0; FLOCK(f); k = __fwritex(src, l, f); FUNLOCK(f); - return k==l ? nmemb : l/size; + return k==l ? nmemb : k/size; } weak_alias(fwrite, fwrite_unlocked);