diff options
author | Charles Harris <charlesr.harris@gmail.com> | 2014-03-26 18:10:34 -0600 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2014-03-26 18:10:34 -0600 |
commit | 419cb15db0c4907082ab5327a7a9ec72b8e3d83c (patch) | |
tree | 4c1fae697f7d003b1eb5605e7d780c7576c5aa81 /numpy/lib/src | |
parent | d35d5c1a1ff9cb9d60da54d8d1e6a66a042b0d27 (diff) | |
parent | e5cf3654e81573bf583cbf6a8688a5e44fafceea (diff) | |
download | numpy-419cb15db0c4907082ab5327a7a9ec72b8e3d83c.tar.gz |
Merge pull request #4542 from immerrr/fix-bincount-systemerror
BUG: fix some errors raised when minlength is incorrect in np.bincount
Diffstat (limited to 'numpy/lib/src')
-rw-r--r-- | numpy/lib/src/_compiled_base.c | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/numpy/lib/src/_compiled_base.c b/numpy/lib/src/_compiled_base.c index f70cd2bab..a461613e3 100644 --- a/numpy/lib/src/_compiled_base.c +++ b/numpy/lib/src/_compiled_base.c @@ -161,14 +161,22 @@ arr_bincount(PyObject *NPY_UNUSED(self), PyObject *args, PyObject *kwds) len = PyArray_SIZE(lst); type = PyArray_DescrFromType(NPY_INTP); - /* handle empty list */ - if (len < 1) { - if (mlength == Py_None) { - minlength = 0; - } - else if (!(minlength = PyArray_PyIntAsIntp(mlength))) { + if (mlength == Py_None) { + minlength = 0; + } + else { + minlength = PyArray_PyIntAsIntp(mlength); + if (minlength <= 0) { + if (!PyErr_Occurred()) { + PyErr_SetString(PyExc_ValueError, + "minlength must be positive"); + } goto fail; } + } + + /* handle empty list */ + if (len == 0) { if (!(ans = (PyArrayObject *)PyArray_Zeros(1, &minlength, type, 0))){ goto fail; } @@ -185,15 +193,6 @@ arr_bincount(PyObject *NPY_UNUSED(self), PyObject *args, PyObject *kwds) } ans_size = mx + 1; if (mlength != Py_None) { - if (!(minlength = PyArray_PyIntAsIntp(mlength))) { - goto fail; - } - if (minlength <= 0) { - /* superfluous, but may catch incorrect usage */ - PyErr_SetString(PyExc_ValueError, - "minlength must be positive"); - goto fail; - } if (ans_size < minlength) { ans_size = minlength; } |