Kaydet (Commit) 64acccf4 authored tarafından Benjamin Peterson's avatar Benjamin Peterson

decref cached keys on type deallocation (#13903)

üst 9e66ac68
...@@ -2593,6 +2593,9 @@ type_setattro(PyTypeObject *type, PyObject *name, PyObject *value) ...@@ -2593,6 +2593,9 @@ type_setattro(PyTypeObject *type, PyObject *name, PyObject *value)
return update_slot(type, name); return update_slot(type, name);
} }
extern void
_PyDictKeys_DecRef(PyDictKeysObject *keys);
static void static void
type_dealloc(PyTypeObject *type) type_dealloc(PyTypeObject *type)
{ {
...@@ -2616,6 +2619,8 @@ type_dealloc(PyTypeObject *type) ...@@ -2616,6 +2619,8 @@ type_dealloc(PyTypeObject *type)
Py_XDECREF(et->ht_name); Py_XDECREF(et->ht_name);
Py_XDECREF(et->ht_qualname); Py_XDECREF(et->ht_qualname);
Py_XDECREF(et->ht_slots); Py_XDECREF(et->ht_slots);
if (et->ht_cached_keys)
_PyDictKeys_DecRef(et->ht_cached_keys);
Py_TYPE(type)->tp_free((PyObject *)type); Py_TYPE(type)->tp_free((PyObject *)type);
} }
...@@ -2791,9 +2796,6 @@ type_traverse(PyTypeObject *type, visitproc visit, void *arg) ...@@ -2791,9 +2796,6 @@ type_traverse(PyTypeObject *type, visitproc visit, void *arg)
return 0; return 0;
} }
extern void
_PyDictKeys_DecRef(PyDictKeysObject *keys);
static int static int
type_clear(PyTypeObject *type) type_clear(PyTypeObject *type)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment