summaryrefslogtreecommitdiff
path: root/numpy/core
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2017-11-04 21:09:49 -0600
committerGitHub <noreply@github.com>2017-11-04 21:09:49 -0600
commitd60709942188fc1b6edc738a0409b5e3ea0343d5 (patch)
tree7e25a7c5c871fa718c3772c417253a769fe72a95 /numpy/core
parenta2bddfa976225954ba345853aa3aa3817950dafc (diff)
parent071fba78f1fcf3f4cd1a40e681f66bc4e84eca4c (diff)
downloadnumpy-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.src14
-rw-r--r--numpy/core/src/multiarray/numpyos.c7
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;