mirror of
https://github.com/python/cpython.git
synced 2024-11-28 04:15:11 +08:00
Better error messages when raising ValueError for int literals. (The
previous version of this code would not show the offending input, even though there was code that attempted this.)
This commit is contained in:
parent
ac6a37ae55
commit
923fece5bd
@ -696,22 +696,17 @@ strop_atoi(self, args)
|
||||
|
||||
while (*s && isspace(Py_CHARMASK(*s)))
|
||||
s++;
|
||||
if (s[0] == '\0') {
|
||||
PyErr_SetString(PyExc_ValueError, "empty string for atoi()");
|
||||
return NULL;
|
||||
}
|
||||
errno = 0;
|
||||
if (base == 0 && s[0] == '0')
|
||||
x = (long) PyOS_strtoul(s, &end, base);
|
||||
else
|
||||
x = PyOS_strtol(s, &end, base);
|
||||
if (end == s || !isxdigit(end[-1])) {
|
||||
PyErr_SetString(PyExc_ValueError, "no digits in int constant");
|
||||
return NULL;
|
||||
}
|
||||
if (end == s || !isxdigit(end[-1]))
|
||||
goto bad;
|
||||
while (*end && isspace(Py_CHARMASK(*end)))
|
||||
end++;
|
||||
if (*end != '\0') {
|
||||
bad:
|
||||
sprintf(buffer, "invalid literal for atoi(): %.200s", s);
|
||||
PyErr_SetString(PyExc_ValueError, buffer);
|
||||
return NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user