diff options
author | Pauli Virtanen <pav@iki.fi> | 2010-02-20 18:08:14 +0000 |
---|---|---|
committer | Pauli Virtanen <pav@iki.fi> | 2010-02-20 18:08:14 +0000 |
commit | 43e97ba1e6ca8c6724bcae288311ce7515869f75 (patch) | |
tree | 70572a7aee171c194daaf94213fc393c386f335f | |
parent | b754c24a827a7462da0174e6255915b86b0b1f92 (diff) | |
download | numpy-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.c | 30 |
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); |