From 61fdc053fe06b6057a2a107c247f26d661672ea0 Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Sun, 4 Aug 2013 15:57:30 +0200 Subject: [PATCH] fix CPython version checking for tp_finalize() --- Cython/Utility/CythonFunction.c | 4 ++-- Cython/Utility/Generator.c | 10 +++++----- Cython/Utility/ModuleSetupCode.c | 4 ++++ 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Cython/Utility/CythonFunction.c b/Cython/Utility/CythonFunction.c index 1d479ed..4d1b077 100644 --- a/Cython/Utility/CythonFunction.c +++ b/Cython/Utility/CythonFunction.c @@ -634,7 +634,7 @@ static PyTypeObject __pyx_CyFunctionType_type = { #if PY_VERSION_HEX >= 0x02060000 0, /*tp_version_tag*/ #endif -#if PY_VERSION_HEX >= 0x03040a00 +#if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif }; @@ -1082,7 +1082,7 @@ static PyTypeObject __pyx_FusedFunctionType_type = { #if PY_VERSION_HEX >= 0x02060000 0, /*tp_version_tag*/ #endif -#if PY_VERSION_HEX >= 0x03040a00 +#if PY_VERSION_HEX >= 0x030400a1 0, /*tp_finalize*/ #endif }; diff --git a/Cython/Utility/Generator.c b/Cython/Utility/Generator.c index b4c5bca..c631aee 100644 --- a/Cython/Utility/Generator.c +++ b/Cython/Utility/Generator.c @@ -482,7 +482,7 @@ static void __Pyx_Generator_del(PyObject *self) { if (gen->resume_label <= 0) return ; -#if PY_VERSION_HEX < 0x03040a00 +#if PY_VERSION_HEX < 0x030400a1 /* Temporarily resurrect the object. */ assert(self->ob_refcnt == 0); self->ob_refcnt = 1; @@ -501,7 +501,7 @@ static void __Pyx_Generator_del(PyObject *self) { /* Restore the saved exception. */ __Pyx_ErrRestore(error_type, error_value, error_traceback); -#if PY_VERSION_HEX < 0x03040a00 +#if PY_VERSION_HEX < 0x030400a1 /* Undo the temporary resurrection; can't use DECREF here, it would * cause a recursive call. */ @@ -582,7 +582,7 @@ static PyTypeObject __pyx_GeneratorType_type = { 0, /*tp_getattro*/ 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC, /* tp_flags*/ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, /* tp_flags*/ 0, /*tp_doc*/ (traverseproc) __Pyx_Generator_traverse, /*tp_traverse*/ 0, /*tp_clear*/ @@ -608,7 +608,7 @@ static PyTypeObject __pyx_GeneratorType_type = { 0, /*tp_cache*/ 0, /*tp_subclasses*/ 0, /*tp_weaklist*/ -#if PY_VERSION_HEX >= 0x03040a00 +#if PY_VERSION_HEX >= 0x030400a1 0, #else __Pyx_Generator_del, /*tp_del*/ @@ -616,7 +616,7 @@ static PyTypeObject __pyx_GeneratorType_type = { #if PY_VERSION_HEX >= 0x02060000 0, /*tp_version_tag*/ #endif -#if PY_VERSION_HEX >= 0x03040a00 +#if PY_VERSION_HEX >= 0x030400a1 __Pyx_Generator_del, /*tp_finalize*/ #endif }; diff --git a/Cython/Utility/ModuleSetupCode.c b/Cython/Utility/ModuleSetupCode.c index c0c59f6..8065ab9 100644 --- a/Cython/Utility/ModuleSetupCode.c +++ b/Cython/Utility/ModuleSetupCode.c @@ -128,6 +128,10 @@ #define Py_TPFLAGS_HAVE_VERSION_TAG 0 #endif +#if PY_VERSION_HEX < 0x030400a1 && !defined(Py_TPFLAGS_HAVE_FINALIZE) + #define Py_TPFLAGS_HAVE_FINALIZE 0 +#endif + /* new Py3.3 unicode type (PEP 393) */ #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 -- 2.7.4