From: Guido van Rossum Date: Tue, 4 Aug 1998 15:04:52 +0000 (+0000) Subject: Better error messages when raising ValueError for int literals. (The X-Git-Tag: v1.5.2a1~164 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=923fece5bd7a8b4d52adabc3c96aa3b12de16220;p=python 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.) --- diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c index 73a35c9b5c..34ac71ad65 100644 --- a/Modules/stropmodule.c +++ b/Modules/stropmodule.c @@ -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;