summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPauli Virtanen <pav@iki.fi>2010-02-20 18:20:27 +0000
committerPauli Virtanen <pav@iki.fi>2010-02-20 18:20:27 +0000
commit57224077fecbc3f43b55966ed60a317c1b5a447b (patch)
tree5ca0cee584333b1b56f5965fba014d461a135b86
parent11b80e7bd14501f33e6e0d9704afca8b10dce695 (diff)
downloadnumpy-57224077fecbc3f43b55966ed60a317c1b5a447b.tar.gz
BUG: fix a crash due to mixing PyUnicode and PyString
-rw-r--r--numpy/core/src/multiarray/mapping.c11
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;
}