diff options
-rw-r--r-- | numpy/core/src/multiarray/mapping.c | 6 | ||||
-rw-r--r-- | numpy/core/tests/test_regression.py | 12 |
2 files changed, 18 insertions, 0 deletions
diff --git a/numpy/core/src/multiarray/mapping.c b/numpy/core/src/multiarray/mapping.c index 8db85bf8f..31472333d 100644 --- a/numpy/core/src/multiarray/mapping.c +++ b/numpy/core/src/multiarray/mapping.c @@ -813,9 +813,15 @@ array_ass_sub(PyArrayObject *self, PyObject *index, PyObject *op) } } +#if defined(NPY_PY3K) + PyErr_Format(PyExc_ValueError, + "field named %S not found.", + index); +#else PyErr_Format(PyExc_ValueError, "field named %s not found.", PyString_AsString(index)); +#endif return -1; } diff --git a/numpy/core/tests/test_regression.py b/numpy/core/tests/test_regression.py index 5458fac33..4c02ee60f 100644 --- a/numpy/core/tests/test_regression.py +++ b/numpy/core/tests/test_regression.py @@ -1562,5 +1562,17 @@ class TestRegression(TestCase): assert_equal(r[0:3:2]['f1'][0][()], r[0:3:2][0]['f1'][()]) assert_equal(r[0:3:2]['f1'][0].strides, r[0:3:2][0]['f1'].strides) + def test_ticket_1770(self): + "Should not segfault on python 3k" + import numpy as np + try: + a = np.zeros((1,), dtype=[('f1', 'f')]) + a['f1'] = 1 + a['f2'] = 1 + except ValueError: + pass + except: + raise AssertionError + if __name__ == "__main__": run_module_suite() |