From 82f1480d63a43c2007460e8f186aba8d0fc4ce38 Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Thu, 22 Mar 2001 18:05:30 +0000 Subject: 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. --- Modules/_weakref.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/_weakref.c b/Modules/_weakref.c index 399b4fe..5bdab4d 100644 --- a/Modules/_weakref.c +++ b/Modules/_weakref.c @@ -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; } -- cgit v0.12