diff options
author | Pauli Virtanen <pav@iki.fi> | 2010-02-20 18:20:27 +0000 |
---|---|---|
committer | Pauli Virtanen <pav@iki.fi> | 2010-02-20 18:20:27 +0000 |
commit | 57224077fecbc3f43b55966ed60a317c1b5a447b (patch) | |
tree | 5ca0cee584333b1b56f5965fba014d461a135b86 | |
parent | 11b80e7bd14501f33e6e0d9704afca8b10dce695 (diff) | |
download | numpy-57224077fecbc3f43b55966ed60a317c1b5a447b.tar.gz |
BUG: fix a crash due to mixing PyUnicode and PyString
-rw-r--r-- | numpy/core/src/multiarray/mapping.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/numpy/core/src/multiarray/mapping.c b/numpy/core/src/multiarray/mapping.c index 90bd7aa69..476f05c36 100644 --- a/numpy/core/src/multiarray/mapping.c +++ b/numpy/core/src/multiarray/mapping.c @@ -543,6 +543,8 @@ array_subscript(PyArrayObject *self, PyObject *op) PyObject *obj; if (PyString_Check(op) || PyUnicode_Check(op)) { + PyObject *temp; + if (self->descr->names) { obj = PyDict_GetItem(self->descr->fields, op); if (obj != NULL) { @@ -557,9 +559,16 @@ array_subscript(PyArrayObject *self, PyObject *op) } } + temp = op; + if (PyUnicode_Check(op)) { + temp = PyUnicode_AsUnicodeEscapeString(op); + } PyErr_Format(PyExc_ValueError, "field named %s not found.", - PyString_AsString(op)); + PyBytes_AsString(temp)); + if (temp != op) { + Py_DECREF(temp); + } return NULL; } |