Kaydet (Commit) 82f1480d authored tarafından Fred Drake's avatar Fred Drake

Inform the cycle-detector that the a weakref object no longer needs to be

tracked as soon as it is clear; this can decrease the number of roots for
the cycle detector sooner rather than later in applications which hold on
to weak references beyond the time of the invalidation.
üst 2c773559
......@@ -59,6 +59,7 @@ clear_weakref(PyWeakReference *self)
if (self->wr_object != Py_None) {
PyWeakReference **list = GET_WEAKREFS_LISTPTR(self->wr_object);
PyObject_GC_Fini((PyObject *)self);
if (*list == self)
*list = self->wr_next;
self->wr_object = Py_None;
......@@ -78,7 +79,6 @@ static void
weakref_dealloc(PyWeakReference *self)
{
clear_weakref(self);
PyObject_GC_Fini((PyObject *)self);
self->wr_next = free_list;
free_list = self;
}
......
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