fix CPython version checking for tp_finalize()
authorStefan Behnel <stefan_ml@behnel.de>
Sun, 4 Aug 2013 13:57:30 +0000 (15:57 +0200)
committerStefan Behnel <stefan_ml@behnel.de>
Sun, 4 Aug 2013 13:57:30 +0000 (15:57 +0200)
Cython/Utility/CythonFunction.c
Cython/Utility/Generator.c
Cython/Utility/ModuleSetupCode.c

index 1d479ed..4d1b077 100644 (file)
@@ -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
 };
index b4c5bca..c631aee 100644 (file)
@@ -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
 };
index c0c59f6..8065ab9 100644 (file)
   #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