[Numpy-discussion] cmp_arg_types bug?

Neal Becker ndbecker2 at gmail.com
Fri Feb 22 13:45:48 EST 2008


Neal Becker wrote:

> cmp_arg_types(int *arg1, int *arg2, int n)
> {
>     while (n--) {
>         if (PyArray_EquivTypenums(*arg1, *arg2)) continue;
>         if (PyArray_CanCastSafely(*arg1, *arg2))
>             return -1;
>         return 1;
>     }
>     return 0;
> }
> 
> IIUC, if can cast (arg1, arg2), we never compare other args, just return
> -1.
> 
> Shouldn't this be:
> cmp_arg_types(int *arg1, int *arg2, int n)
> {
>     while (n--) {
>         if (PyArray_EquivTypenums(*arg1, *arg2) or
>            (PyArray_CanCastSafely(*arg1, *arg2))
>             continue;
>         return 1;
>     }
>     return 0;
> }

Oh, better make that:
static int
cmp_arg_types(int *arg1, int *arg2, int n)
{
    for (;n > 0; n--, ++arg1, ++arg2) {
        if (PyArray_EquivTypenums(*arg1, *arg2) ||
            PyArray_CanCastSafely(*arg1, *arg2))
          continue;
        return 1;
    }
    return 0;
}





More information about the NumPy-Discussion mailing list