]> granicus.if.org Git - python/commitdiff
decref cached keys on type deallocation (#13903)
authorBenjamin Peterson <benjamin@python.org>
Fri, 27 Apr 2012 19:07:36 +0000 (15:07 -0400)
committerBenjamin Peterson <benjamin@python.org>
Fri, 27 Apr 2012 19:07:36 +0000 (15:07 -0400)
Objects/typeobject.c

index 58f55df16625b0958bb6d5b0ece96023f45b5c3f..9babd574a21184f4c1b9a82613fe89829f5bc748 100644 (file)
@@ -2593,6 +2593,9 @@ type_setattro(PyTypeObject *type, PyObject *name, PyObject *value)
     return update_slot(type, name);
 }
 
+extern void
+_PyDictKeys_DecRef(PyDictKeysObject *keys);
+
 static void
 type_dealloc(PyTypeObject *type)
 {
@@ -2616,6 +2619,8 @@ type_dealloc(PyTypeObject *type)
     Py_XDECREF(et->ht_name);
     Py_XDECREF(et->ht_qualname);
     Py_XDECREF(et->ht_slots);
+    if (et->ht_cached_keys)
+        _PyDictKeys_DecRef(et->ht_cached_keys);
     Py_TYPE(type)->tp_free((PyObject *)type);
 }
 
@@ -2791,9 +2796,6 @@ type_traverse(PyTypeObject *type, visitproc visit, void *arg)
     return 0;
 }
 
-extern void
-_PyDictKeys_DecRef(PyDictKeysObject *keys);
-
 static int
 type_clear(PyTypeObject *type)
 {