]> granicus.if.org Git - python/commitdiff
Fix SF bug 572567: Memory leak in object comparison.
authorRaymond Hettinger <python@rcn.com>
Mon, 24 Jun 2002 13:08:16 +0000 (13:08 +0000)
committerRaymond Hettinger <python@rcn.com>
Mon, 24 Jun 2002 13:08:16 +0000 (13:08 +0000)
Lib/test/test_descr.py
Misc/ACKS
Objects/typeobject.c

index dca8ea1760e7a3bdf4682bea2ddaa2ee5f1cff78..ea67c4eb7763adca5e4eb93b669a8884ada5e1f0 100644 (file)
@@ -1163,6 +1163,18 @@ def slots():
     gc.collect()
     vereq(Counted.counter, 0)
 
+    # Test lookup leaks [SF bug 572567]
+    import sys,gc
+    class G(object):
+        def __cmp__(self, other):
+            return 0
+    g = G()
+    orig_objects = len(gc.get_objects())
+    for i in xrange(10):
+        g==g
+    new_objects = len(gc.get_objects())
+    vereq(orig_objects, new_objects)
+
 def dynamics():
     if verbose: print "Testing class attribute propagation..."
     class D(object):
index fb649413122c77508a2fd6fb785fd951271dc290..ed9b80cf715c4e6688a40333592f3758dce2b8c7 100644 (file)
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -233,6 +233,7 @@ John Interrante
 Ben Jackson
 Paul Jackson
 David Jacobs
+Kevin Jacobs
 Geert Jansen
 Jack Jansen
 Bill Janssen
index 47613f51f2a47d2a48889a56c5e5eabe6e2305b3..2beb3b32a84a47e7718a26546111699c8d07e91b 100644 (file)
@@ -3286,6 +3286,7 @@ half_compare(PyObject *self, PyObject *other)
                        res = PyObject_Call(func, args, NULL);
                        Py_DECREF(args);
                }
+               Py_DECREF(func);
                if (res != Py_NotImplemented) {
                        if (res == NULL)
                                return -2;