mirror of
https://github.com/python/cpython.git
synced 2024-11-28 04:15:11 +08:00
gh-95605: Fix float(s)
error message when s
contains only whitespace (GH-95665)
This PR fixes the error message from float(s) in the case where s contains only whitespace.
This commit is contained in:
parent
37c0f9ccc0
commit
97e9cfa75a
@ -137,6 +137,10 @@ class GeneralFloatCases(unittest.TestCase):
|
||||
check('123\xbd')
|
||||
check(' 123 456 ')
|
||||
check(b' 123 456 ')
|
||||
# all whitespace (cf. https://github.com/python/cpython/issues/95605)
|
||||
check('')
|
||||
check(' ')
|
||||
check('\t \n')
|
||||
|
||||
# non-ascii digits (error came from non-digit '!')
|
||||
check('\u0663\u0661\u0664!')
|
||||
|
@ -0,0 +1,2 @@
|
||||
Fix misleading contents of error message when converting an all-whitespace
|
||||
string to :class:`float`.
|
@ -162,11 +162,18 @@ float_from_string_inner(const char *s, Py_ssize_t len, void *obj)
|
||||
double x;
|
||||
const char *end;
|
||||
const char *last = s + len;
|
||||
/* strip space */
|
||||
/* strip leading whitespace */
|
||||
while (s < last && Py_ISSPACE(*s)) {
|
||||
s++;
|
||||
}
|
||||
if (s == last) {
|
||||
PyErr_Format(PyExc_ValueError,
|
||||
"could not convert string to float: "
|
||||
"%R", obj);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* strip trailing whitespace */
|
||||
while (s < last - 1 && Py_ISSPACE(last[-1])) {
|
||||
last--;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user