summaryrefslogtreecommitdiff
path: root/numpy
diff options
context:
space:
mode:
Diffstat (limited to 'numpy')
-rw-r--r--numpy/core/src/arraytypes.inc.src10
-rw-r--r--numpy/core/tests/test_multiarray.py2
2 files changed, 8 insertions, 4 deletions
diff --git a/numpy/core/src/arraytypes.inc.src b/numpy/core/src/arraytypes.inc.src
index edc23ae1f..3dfa1b0ae 100644
--- a/numpy/core/src/arraytypes.inc.src
+++ b/numpy/core/src/arraytypes.inc.src
@@ -313,11 +313,13 @@ UNICODE_setitem(PyObject *op, char *ov, PyArrayObject *ap)
#endif
if (!PyString_Check(op) && !PyUnicode_Check(op) &&
- PySequence_Check(op)) {
+ PySequence_Check(op) && PySequence_Size(op) > 0) {
PyErr_SetString(PyExc_ValueError,
"setting an array element with a sequence");
return -1;
}
+ /* Sequence_Size might have returned an error */
+ if (PyErr_Occurred()) PyErr_Clear();
if ((temp=PyObject_Unicode(op)) == NULL) return -1;
ptr = PyUnicode_AS_UNICODE(temp);
if ((ptr == NULL) || (PyErr_Occurred())) {
@@ -375,12 +377,14 @@ STRING_setitem(PyObject *op, char *ov, PyArrayObject *ap)
Py_ssize_t len;
PyObject *temp=NULL;
- if (!PyString_Check(op) && !PyUnicode_Check(op) &&
- PySequence_Check(op)) {
+ if (!PyString_Check(op) && !PyUnicode_Check(op) &&
+ PySequence_Check(op) && PySequence_Size(op) > 0) {
PyErr_SetString(PyExc_ValueError,
"setting an array element with a sequence");
return -1;
}
+ /* Sequence_Size might have returned an error */
+ if (PyErr_Occurred()) PyErr_Clear();
if ((temp = PyObject_Str(op)) == NULL) return -1;
if (PyString_AsStringAndSize(temp, &ptr, &len) == -1) {
diff --git a/numpy/core/tests/test_multiarray.py b/numpy/core/tests/test_multiarray.py
index 54759fdff..58c93947d 100644
--- a/numpy/core/tests/test_multiarray.py
+++ b/numpy/core/tests/test_multiarray.py
@@ -166,7 +166,7 @@ class test_zero_rank(NumpyTestCase):
x[i] = v
self.failUnlessRaises(IndexError, assign, a, 0, 42)
self.failUnlessRaises(IndexError, assign, b, 0, '')
- self.failUnlessRaises(TypeError, assign, a, (), '')
+ self.failUnlessRaises(ValueError, assign, a, (), '')
def check_newaxis(self):
a,b = self.d