Hello, Sorry if I am wrong, but it seems to me that the change in r54588 has a problem: http://mail.python.org/pipermail/python-3000-checkins/2007-March/000433.html - in the normal case, the return value is INCREF'ed twice - in the error case, Py_INCREF(NULL) is called...
One easy way to correct this is to move the last INCREF: (sorry for the approximative patch format) python/branches/p3yk/Objects/typeobject.c: ================================================= static PyObject * object_richcompare(PyObject *self, PyObject *other, int op) { PyObject *res; switch (op) { case Py_EQ: res = (self == other) ? Py_True : Py_False; + Py_INCREF(res); break; case Py_NE: /* By default, != returns the opposite of ==, unless the latter returns NotImplemented. */ res = PyObject_RichCompare(self, other, Py_EQ); if (res != NULL && res != Py_NotImplemented) { int ok = PyObject_IsTrue(res); Py_DECREF(res); if (ok < 0) res = NULL; else { if (ok) res = Py_False; else res = Py_True; Py_INCREF(res); } } break; default: res = Py_NotImplemented; + Py_INCREF(res); break; } - Py_INCREF(res); return res; } Just trying to be faster than Coverity... -- Amaury Forgeot d'Arc _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com