From: Fred Drake Date: Thu, 22 Mar 2001 18:05:30 +0000 (+0000) Subject: Inform the cycle-detector that the a weakref object no longer needs to be X-Git-Tag: v2.1b2~64 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=82f1480d63a43c2007460e8f186aba8d0fc4ce38;p=thirdparty%2FPython%2Fcpython.git 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. --- diff --git a/Modules/_weakref.c b/Modules/_weakref.c index 399b4fe67b55..5bdab4dbc0ef 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; }