From 8db6825e6a59f94babea58f3bee36240de1a7c37 Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Sun, 4 Aug 2013 16:03:00 +0200 Subject: [PATCH] use proper C-API function for generator finalisation --- Cython/Utility/Generator.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Cython/Utility/Generator.c b/Cython/Utility/Generator.c index c631aee..d1ab132 100644 --- a/Cython/Utility/Generator.c +++ b/Cython/Utility/Generator.c @@ -460,16 +460,20 @@ static void __Pyx_Generator_dealloc(PyObject *self) { PyObject_GC_UnTrack(gen); if (gen->gi_weakreflist != NULL) PyObject_ClearWeakRefs(self); - PyObject_GC_Track(self); if (gen->resume_label > 0) { /* Generator is paused, so we need to close */ + PyObject_GC_Track(self); +#if PY_VERSION_HEX >= 0x030400a1 + if (PyObject_CallFinalizerFromDealloc(self)) +#else Py_TYPE(gen)->tp_del(self); if (self->ob_refcnt > 0) +#endif return; /* resurrected. :( */ + PyObject_GC_UnTrack(self); } - PyObject_GC_UnTrack(self); __Pyx_Generator_clear(self); PyObject_GC_Del(gen); } -- 2.7.4