Rich comparisons fallout: PyObject_Hash() should check for both
tp_compare and tp_richcompare NULL before deciding to do a quickie
based on the object address. (Tim Peters discovered this.)
diff --git a/Objects/object.c b/Objects/object.c
index 323ed54..44344f9 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -914,7 +914,7 @@
PyTypeObject *tp = v->ob_type;
if (tp->tp_hash != NULL)
return (*tp->tp_hash)(v);
- if (tp->tp_compare == NULL) {
+ if (tp->tp_compare == NULL && tp->tp_richcompare == NULL) {
return _Py_HashPointer(v); /* Use address as hash value */
}
/* If there's a cmp but no hash defined, the object can't be hashed */