X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fstdlib%2Fwcstod.c;h=83f308d3b327fd5f140418721dd1196fcbb94a37;hb=ac562aa1ef4012f617583f474a8d8e5c972ed6ee;hp=338c616052f81dd4ba183c2fefe629004b682404;hpb=f94cbdeb4181e604e193646af16a2e5daa3dd718;p=musl diff --git a/src/stdlib/wcstod.c b/src/stdlib/wcstod.c index 338c6160..83f308d3 100644 --- a/src/stdlib/wcstod.c +++ b/src/stdlib/wcstod.c @@ -1,6 +1,7 @@ #include "shgetc.h" #include "floatscan.h" #include "stdio_impl.h" +#include /* This read function heavily cheats. It knows: * (1) len will always be 1 @@ -39,23 +40,25 @@ static long double wcstox(const wchar_t *s, wchar_t **p, int prec) while (iswspace(*t)) t++; f.cookie = (void *)t; shlim(&f, 0); - long double y = __floatscan(&f, -1, prec, 1); - off_t cnt = shcnt(&f); - if (p) *p = cnt ? t + cnt : (wchar_t *)s; + long double y = __floatscan(&f, prec, 1); + if (p) { + size_t cnt = shcnt(&f); + *p = cnt ? t + cnt : (wchar_t *)s; + } return y; } -float wcstof(const wchar_t *s, wchar_t **p) +float wcstof(const wchar_t *restrict s, wchar_t **restrict p) { return wcstox(s, p, 0); } -double wcstod(const wchar_t *s, wchar_t **p) +double wcstod(const wchar_t *restrict s, wchar_t **restrict p) { return wcstox(s, p, 1); } -long double wcstold(const wchar_t *s, wchar_t **p) +long double wcstold(const wchar_t *restrict s, wchar_t **restrict p) { return wcstox(s, p, 2); }