[Numpy-discussion] weird searchsorted behavior for unicode array

Thouis (Ray) Jones thouis@gmail....
Thu Mar 29 04:04:27 CDT 2012


It seems to be a bug in the unicode string length computation in
arraytypes.c.src:UNICODE_compare(), based on comparison to the code in
arrayobject.c:_myunicmp() and arrayobject.c:_compare_strings().

Patch below (against maintenance/1.6.x, but the bug also looks to be
present in master based on my reading of the code).

---
 numpy/core/src/multiarray/arraytypes.c.src |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/numpy/core/src/multiarray/arraytypes.c.src
b/numpy/core/src/multiarray/arraytypes.c.src
index fde95c4..660d1e5 100644
--- a/numpy/core/src/multiarray/arraytypes.c.src
+++ b/numpy/core/src/multiarray/arraytypes.c.src
@@ -2789,7 +2789,7 @@ static int
 UNICODE_compare(PyArray_UCS4 *ip1, PyArray_UCS4 *ip2,
                 PyArrayObject *ap)
 {
-    int itemsize = ap->descr->elsize;
+    int itemsize = (ap->descr->elsize) >> 2;

     if (itemsize < 0) {
         return 0;
-- 
1.7.9.3


More information about the NumPy-Discussion mailing list