|
|
@ -6,8 +6,11 @@ |
|
|
|
|
|
|
|
|
unsigned long long wcstoull(const wchar_t *s, wchar_t **p, int base) |
|
|
unsigned long long wcstoull(const wchar_t *s, wchar_t **p, int base) |
|
|
{ |
|
|
{ |
|
|
uintmax_t x = wcstoumax(s, p, base); |
|
|
intmax_t x; |
|
|
if (x > ULLONG_MAX) { |
|
|
if (sizeof(intmax_t) == sizeof(long long)) |
|
|
|
|
|
return wcstoumax(s, p, base); |
|
|
|
|
|
x = wcstoimax(s, p, base); |
|
|
|
|
|
if (-x > ULLONG_MAX || x > ULLONG_MAX) { |
|
|
errno = ERANGE; |
|
|
errno = ERANGE; |
|
|
return ULLONG_MAX; |
|
|
return ULLONG_MAX; |
|
|
} |
|
|
} |
|
|
|