Compare instance methods by comparing the object and the function.
diff --git a/Objects/classobject.c b/Objects/classobject.c
index d4a2f82..19f887c 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -828,6 +828,16 @@
free((ANY *)im);
}
+static int
+instancemethod_compare(a, b)
+ instancemethodobject *a, *b;
+{
+ int cmp = cmpobject(a->im_self, b->im_self);
+ if (cmp == 0)
+ cmp = cmpobject(a->im_func, b->im_func);
+ return cmp;
+}
+
typeobject Instancemethodtype = {
OB_HEAD_INIT(&Typetype)
0,
@@ -838,7 +848,7 @@
0, /*tp_print*/
instancemethod_getattr, /*tp_getattr*/
0, /*tp_setattr*/
- 0, /*tp_compare*/
+ instancemethod_compare, /*tp_compare*/
0, /*tp_repr*/
0, /*tp_as_number*/
0, /*tp_as_sequence*/