diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2016-11-12 14:29:48 +0200 |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2016-11-12 14:29:48 +0200 |
commit | e7ed9c7bd2204dd48d67eb7b14813c0338a85a0c (patch) | |
tree | fdcf7d7cba9df4da905bfc99dd42ddc7cfe15138 /Python/mystrtoul.c | |
parent | 4a994ab2dc58b8fd66549ea28eb489e8009d19d7 (diff) | |
parent | 5f7236d4e16f4f4eee4da97621a6f8a225dfba4e (diff) | |
download | cpython-e7ed9c7bd2204dd48d67eb7b14813c0338a85a0c.tar.gz |
Issue #28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
when decode astral characters.
Diffstat (limited to 'Python/mystrtoul.c')
-rw-r--r-- | Python/mystrtoul.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/Python/mystrtoul.c b/Python/mystrtoul.c index 8a54cbf403..98429d4b42 100644 --- a/Python/mystrtoul.c +++ b/Python/mystrtoul.c @@ -92,11 +92,11 @@ static int digitlimit[] = { ** exceptions - we don't check for them. */ unsigned long -PyOS_strtoul(register char *str, char **ptr, int base) +PyOS_strtoul(const char *str, char **ptr, int base) { - register unsigned long result = 0; /* return value of the function */ - register int c; /* current input character */ - register int ovlimit; /* required digits to overflow */ + unsigned long result = 0; /* return value of the function */ + int c; /* current input character */ + int ovlimit; /* required digits to overflow */ /* skip leading white space */ while (*str && Py_ISSPACE(Py_CHARMASK(*str))) @@ -111,7 +111,7 @@ PyOS_strtoul(register char *str, char **ptr, int base) /* there must be at least one digit after 0x */ if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 16) { if (ptr) - *ptr = str; + *ptr = (char *)str; return 0; } ++str; @@ -120,7 +120,7 @@ PyOS_strtoul(register char *str, char **ptr, int base) /* there must be at least one digit after 0o */ if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 8) { if (ptr) - *ptr = str; + *ptr = (char *)str; return 0; } ++str; @@ -129,7 +129,7 @@ PyOS_strtoul(register char *str, char **ptr, int base) /* there must be at least one digit after 0b */ if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 2) { if (ptr) - *ptr = str; + *ptr = (char *)str; return 0; } ++str; @@ -141,7 +141,7 @@ PyOS_strtoul(register char *str, char **ptr, int base) while (Py_ISSPACE(Py_CHARMASK(*str))) ++str; if (ptr) - *ptr = str; + *ptr = (char *)str; return 0; } } @@ -157,7 +157,7 @@ PyOS_strtoul(register char *str, char **ptr, int base) /* there must be at least one digit after 0x */ if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 16) { if (ptr) - *ptr = str; + *ptr = (char *)str; return 0; } ++str; @@ -171,7 +171,7 @@ PyOS_strtoul(register char *str, char **ptr, int base) /* there must be at least one digit after 0o */ if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 8) { if (ptr) - *ptr = str; + *ptr = (char *)str; return 0; } ++str; @@ -185,7 +185,7 @@ PyOS_strtoul(register char *str, char **ptr, int base) /* there must be at least one digit after 0b */ if (_PyLong_DigitValue[Py_CHARMASK(str[1])] >= 2) { if (ptr) - *ptr = str; + *ptr = (char *)str; return 0; } ++str; @@ -197,7 +197,7 @@ PyOS_strtoul(register char *str, char **ptr, int base) /* catch silly bases */ if (base < 2 || base > 36) { if (ptr) - *ptr = str; + *ptr = (char *)str; return 0; } @@ -213,7 +213,7 @@ PyOS_strtoul(register char *str, char **ptr, int base) if (ovlimit > 0) /* no overflow check required */ result = result * base + c; else { /* requires overflow check */ - register unsigned long temp_result; + unsigned long temp_result; if (ovlimit < 0) /* guaranteed overflow */ goto overflowed; @@ -239,7 +239,7 @@ PyOS_strtoul(register char *str, char **ptr, int base) /* set pointer to point to the last character scanned */ if (ptr) - *ptr = str; + *ptr = (char *)str; return result; @@ -248,7 +248,7 @@ overflowed: /* spool through remaining digit characters */ while (_PyLong_DigitValue[Py_CHARMASK(*str)] < base) ++str; - *ptr = str; + *ptr = (char *)str; } errno = ERANGE; return (unsigned long)-1; @@ -260,7 +260,7 @@ overflowed: #define PY_ABS_LONG_MIN (0-(unsigned long)LONG_MIN) long -PyOS_strtol(char *str, char **ptr, int base) +PyOS_strtol(const char *str, char **ptr, int base) { long result; unsigned long uresult; |