summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPauli Virtanen <pav@iki.fi>2010-02-20 18:08:14 +0000
committerPauli Virtanen <pav@iki.fi>2010-02-20 18:08:14 +0000
commit43e97ba1e6ca8c6724bcae288311ce7515869f75 (patch)
tree70572a7aee171c194daaf94213fc393c386f335f
parentb754c24a827a7462da0174e6255915b86b0b1f92 (diff)
downloadnumpy-43e97ba1e6ca8c6724bcae288311ce7515869f75.tar.gz
BUG: core: prefer byte strings over PEP 3118 buffers when determining array type in _array_find_type
-rw-r--r--numpy/core/src/multiarray/common.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/numpy/core/src/multiarray/common.c b/numpy/core/src/multiarray/common.c
index c87f0d061..b66f8e208 100644
--- a/numpy/core/src/multiarray/common.c
+++ b/numpy/core/src/multiarray/common.c
@@ -195,6 +195,21 @@ _array_find_type(PyObject *op, PyArray_Descr *minitype, int max)
goto finish;
}
+ if (PyBytes_Check(op)) {
+ chktype = PyArray_DescrNewFromType(PyArray_STRING);
+ chktype->elsize = PyString_GET_SIZE(op);
+ goto finish;
+ }
+
+ if (PyUnicode_Check(op)) {
+ chktype = PyArray_DescrNewFromType(PyArray_UNICODE);
+ chktype->elsize = PyUnicode_GET_DATA_SIZE(op);
+#ifndef Py_UNICODE_WIDE
+ chktype->elsize <<= 1;
+#endif
+ goto finish;
+ }
+
#if PY_VERSION_HEX >= 0x02070000
/* PEP 3118 buffer interface */
memset(&buffer_view, 0, sizeof(Py_buffer));
@@ -258,21 +273,6 @@ _array_find_type(PyObject *op, PyArray_Descr *minitype, int max)
PyErr_Clear();
}
- if (PyString_Check(op)) {
- chktype = PyArray_DescrNewFromType(PyArray_STRING);
- chktype->elsize = PyString_GET_SIZE(op);
- goto finish;
- }
-
- if (PyUnicode_Check(op)) {
- chktype = PyArray_DescrNewFromType(PyArray_UNICODE);
- chktype->elsize = PyUnicode_GET_DATA_SIZE(op);
-#ifndef Py_UNICODE_WIDE
- chktype->elsize <<= 1;
-#endif
- goto finish;
- }
-
#if !defined(NPY_PY3K)
if (PyBuffer_Check(op)) {
chktype = PyArray_DescrNewFromType(PyArray_VOID);