diff options
| author | Charles Harris <charlesr.harris@gmail.com> | 2017-11-04 21:09:49 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-11-04 21:09:49 -0600 |
| commit | d60709942188fc1b6edc738a0409b5e3ea0343d5 (patch) | |
| tree | 7e25a7c5c871fa718c3772c417253a769fe72a95 /numpy/core | |
| parent | a2bddfa976225954ba345853aa3aa3817950dafc (diff) | |
| parent | 071fba78f1fcf3f4cd1a40e681f66bc4e84eca4c (diff) | |
| download | numpy-d60709942188fc1b6edc738a0409b5e3ea0343d5.tar.gz | |
Merge pull request #9944 from eric-wieser/better-strtold-error
MAINT/BUG: Don't squash useful error messages in favor of generic ones
Diffstat (limited to 'numpy/core')
| -rw-r--r-- | numpy/core/src/multiarray/arraytypes.c.src | 14 | ||||
| -rw-r--r-- | numpy/core/src/multiarray/numpyos.c | 7 |
2 files changed, 10 insertions, 11 deletions
diff --git a/numpy/core/src/multiarray/arraytypes.c.src b/numpy/core/src/multiarray/arraytypes.c.src index dc89a2318..6b9e61908 100644 --- a/numpy/core/src/multiarray/arraytypes.c.src +++ b/numpy/core/src/multiarray/arraytypes.c.src @@ -356,18 +356,18 @@ string_to_long_double(PyObject*op) if (s) { errno = 0; temp = NumPyOS_ascii_strtold(s, &end); - if (end==s || *end) { + if (errno) { PyErr_Format(PyExc_ValueError, - "invalid literal for long double: %s", - s); + "invalid literal for long double: %s (%s)", + s, + strerror(errno)); Py_XDECREF(b); return 0; } - else if (errno) { + else if (end == s || *end) { PyErr_Format(PyExc_ValueError, - "invalid literal for long double: %s (%s)", - s, - strerror(errno)); + "invalid literal for long double: %s", + s); Py_XDECREF(b); return 0; } diff --git a/numpy/core/src/multiarray/numpyos.c b/numpy/core/src/multiarray/numpyos.c index b232d3f23..e6f414786 100644 --- a/numpy/core/src/multiarray/numpyos.c +++ b/numpy/core/src/multiarray/numpyos.c @@ -570,12 +570,11 @@ NumPyOS_ascii_strtold(const char *s, char** endptr) errno = 0; result = strtold_l(s, endptr, clocale); freelocale(clocale); - if (errno) { - *endptr = (char*)s; - } } else { - *endptr = (char*)s; + if (endptr != NULL) { + *endptr = (char*)s; + } result = 0; } return result; |
