X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fstdlib%2Fstrtoul.c;h=20d8bfb28f0ab2f45506d0ae7d09cd0773e9d7fe;hb=415c4cd7fdb3e8b7476fbb2be2390f4592cf5165;hp=951d5e8c7a29a12a3adfb7450142985f0eff6755;hpb=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01;p=musl diff --git a/src/stdlib/strtoul.c b/src/stdlib/strtoul.c index 951d5e8c..20d8bfb2 100644 --- a/src/stdlib/strtoul.c +++ b/src/stdlib/strtoul.c @@ -5,8 +5,11 @@ unsigned long strtoul(const char *s, char **p, int base) { - uintmax_t x = strtoumax(s, p, base); - if (x > ULONG_MAX) { + intmax_t x; + if (sizeof(intmax_t) == sizeof(long)) + return strtoumax(s, p, base); + x = strtoimax(s, p, base); + if (-x > ULONG_MAX || x > ULONG_MAX) { errno = ERANGE; return ULONG_MAX; }