X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Fstdlib%2Fstrtoul.c;h=20d8bfb28f0ab2f45506d0ae7d09cd0773e9d7fe;hp=951d5e8c7a29a12a3adfb7450142985f0eff6755;hb=96cea94ad258be262ecf15b33d13cf775e59720d;hpb=5989dde3459b2ccd304f89e3e875136e5608b8ff 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; }