[Numpy-discussion] searchsorted bug
Charles R Harris
charlesr.harris at gmail.com
Thu Jan 31 12:57:17 EST 2008
On Jan 31, 2008 10:49 AM, James Philbin <philbinj at gmail.com> wrote:
> Well, i've digged around in the source code and here is a patch which
> makes it work for the case I wanted:
>
> --- multiarraymodule.c.old 2008-01-31 17:42:32.000000000 +0000
> +++ multiarraymodule.c 2008-01-31 17:43:43.000000000 +0000
> @@ -2967,7 +2967,10 @@
> char *parr = arr->data;
> char *pkey = key->data;
> intp *pret = (intp *)ret->data;
> - int elsize = arr->descr->elsize;
> +
> + int elsize1 = arr->descr->elsize;
> + int elsize2 = key->descr->elsize;
> +
> intp i;
>
> for(i = 0; i < nkeys; ++i) {
> @@ -2975,14 +2978,14 @@
> intp imax = nelts;
> while (imin < imax) {
> intp imid = imin + ((imax - imin) >> 2);
> - if (compare(parr + elsize*imid, pkey, key) < 0)
> + if (compare(parr + elsize1*imid, pkey, key) < 0)
> imin = imid + 1;
> else
> imax = imid;
> }
> *pret = imin;
> pret += 1;
> - pkey += elsize;
> + pkey += elsize2;
> }
> }
>
But is that safe? You have changed the stepping to adjust for the element
size, but there is no guarantee that the comparison works.
Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20080131/8616a93f/attachment.html>
More information about the NumPy-Discussion
mailing list