only clear a module's __dict__ if the module is the only one with a reference to it #7140

This commit is contained in:
Benjamin Peterson 2009-10-15 15:44:46 +00:00
parent 96e319e5ac
commit 196b0925ca
3 changed files with 15 additions and 1 deletions

View file

@ -175,7 +175,10 @@ module_dealloc(PyModuleObject *m)
{
PyObject_GC_UnTrack(m);
if (m->md_dict != NULL) {
_PyModule_Clear((PyObject *)m);
/* If we are the only ones holding a reference, we can clear
the dictionary. */
if (Py_REFCNT(m->md_dict) == 1)
_PyModule_Clear((PyObject *)m);
Py_DECREF(m->md_dict);
}
Py_TYPE(m)->tp_free((PyObject *)m);