RichCompare and RichCompareBool

Duncan Booth duncan.booth at invalid.invalid
Mon Mar 2 06:00:45 EST 2009


Aaron Brady <castironpi at gmail.com> wrote:

> Hi,
> 
> In the source for 3.0.1, PyObject_RichCompareBool seems to perform an
> extra check on identity that PyObjecct_RichCompare does not perform.
> 
> Here's the excerpt from RichCompareBool (line 612):
> 
>      /* Quick result when objects are the same.
>         Guarantees that identity implies equality. */
>      if (v == w) {
>           if (op == Py_EQ)
>                return 1;
>           else if (op == Py_NE)
>                return 0;
>      }
> 
>      res = PyObject_RichCompare(v, w, op);
> 
> The code for PyObject_RichCompare does not contain this, it doesn't
> seem.  Is it a bug?

Without looking at the code it sounds like a bug: identity doesn't always 
imply equality.

It may be that the code you've found only gets called in specific cases 
where you can make that assumption, but otherwise it should be removed.

-- 
Duncan Booth http://kupuguy.blogspot.com



More information about the Python-list mailing list