zopefoundation/Acquisition

Fix process of reference count during GC

Closed this issue · 2 comments

When we subtract reference counter of an object, the destructor is automatically called if the value of counter is 0.
At the same time an error occurs, as the GC executed while the destructor is still in running phase.
To eliminate the error, we have added below program which exclude objects from GC in the destructor in line 4.

static void
Wrapper_dealloc(Wrapper *self)
{
PyObject_GC_UnTrack((PyObject )self); //Add this line to eliminate self from GC
Wrapper_clear(self);
self->ob_type->tp_free((PyObject
)self);
}

Patch: Acquisition.zip

Thanks for reporting. Issue is fixed via pull-request #22

Thanks so much for quickly marging this fix.