diff options
Diffstat (limited to 'numpy')
-rw-r--r-- | numpy/core/src/multiarray/arraytypes.c.src | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/numpy/core/src/multiarray/arraytypes.c.src b/numpy/core/src/multiarray/arraytypes.c.src index a7d36ab42..1e0522f4a 100644 --- a/numpy/core/src/multiarray/arraytypes.c.src +++ b/numpy/core/src/multiarray/arraytypes.c.src @@ -2297,13 +2297,13 @@ STRING_nonzero (char *ip, PyArrayObject *ap) int len = PyArray_DESCR(ap)->elsize; int i; npy_bool nonz = NPY_FALSE; - - if ((len == 1) && (*ip == '\0')) { - return NPY_FALSE; - } + npy_bool seen_null = NPY_FALSE; for (i = 0; i < len; i++) { - if (!Py_STRING_ISSPACE(*ip)) { + if (*ip == '\0') { + seen_null = NPY_TRUE; + } + else if (seen_null || !Py_STRING_ISSPACE(*ip)) { nonz = NPY_TRUE; break; } @@ -2324,6 +2324,7 @@ UNICODE_nonzero (npy_ucs4 *ip, PyArrayObject *ap) int len = PyArray_DESCR(ap)->elsize >> 2; int i; npy_bool nonz = NPY_FALSE; + npy_bool seen_null = NPY_FALSE; char *buffer = NULL; if ((!PyArray_ISNOTSWAPPED(ap)) || (!PyArray_ISALIGNED(ap))) { @@ -2343,7 +2344,10 @@ UNICODE_nonzero (npy_ucs4 *ip, PyArrayObject *ap) } for (i = 0; i < len; i++) { - if (!PyArray_UCS4_ISSPACE(*ip)) { + if (*ip == '\0') { + seen_null = NPY_TRUE; + } + else if (seen_null || !PyArray_UCS4_ISSPACE(*ip)) { nonz = NPY_TRUE; break; } |