diff --git a/src/if_python3.c b/src/if_python3.c index fd117f0a71..1045b84850 100644 --- a/src/if_python3.c +++ b/src/if_python3.c @@ -219,16 +219,9 @@ static HINSTANCE hinstPy3 = 0; // Instance of python.dll # define PyObject_GetItem py3_PyObject_GetItem # define PyObject_IsTrue py3_PyObject_IsTrue # define PyModule_GetDict py3_PyModule_GetDict -# if defined(USE_LIMITED_API) \ - && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG)) -# undef Py_INCREF -# if Py_LIMITED_API+0 >= 0x030a00A7 -# define _Py_IncRef py3__Py_IncRef -# define Py_INCREF _Py_IncRef -# else -# define Py_IncRef py3_Py_IncRef -# define Py_INCREF Py_IncRef -# endif +# ifdef USE_LIMITED_API +# define Py_IncRef py3_Py_IncRef +# define Py_DecRef py3_Py_DecRef # endif # ifdef USE_LIMITED_API # define Py_CompileString py3_Py_CompileString @@ -403,14 +396,9 @@ static void (*py3_Py_Finalize)(void); static void (*py3_PyErr_SetString)(PyObject *, const char *); static void (*py3_PyErr_SetObject)(PyObject *, PyObject *); static int (*py3_PyErr_ExceptionMatches)(PyObject *); -# if defined(USE_LIMITED_API) \ - && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG)) -# if Py_LIMITED_API+0 >= 0x030a00A7 -# define _Py_IncRef py3__Py_IncRef -static void (*py3__Py_IncRef)(PyObject *); -# else +# ifdef USE_LIMITED_API static void (*py3_Py_IncRef)(PyObject *); -# endif +static void (*py3_Py_DecRef)(PyObject *); # endif # ifdef USE_LIMITED_API static PyObject* (*py3_Py_CompileString)(const char *, const char *, int); @@ -619,13 +607,9 @@ static struct {"PyErr_SetString", (PYTHON_PROC*)&py3_PyErr_SetString}, {"PyErr_SetObject", (PYTHON_PROC*)&py3_PyErr_SetObject}, {"PyErr_ExceptionMatches", (PYTHON_PROC*)&py3_PyErr_ExceptionMatches}, -# if defined(USE_LIMITED_API) \ - && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG)) -# if Py_LIMITED_API+0 >= 0x030a00A7 - {"_Py_IncRef", (PYTHON_PROC*)&py3__Py_IncRef}, -# else +# ifdef USE_LIMITED_API {"Py_IncRef", (PYTHON_PROC*)&py3_Py_IncRef}, -# endif + {"Py_DecRef", (PYTHON_PROC*)&py3_Py_DecRef}, # endif # ifdef USE_LIMITED_API {"Py_CompileString", (PYTHON_PROC*)&py3_Py_CompileString}, @@ -803,18 +787,18 @@ py3__Py_XDECREF(PyObject *op) # define Py_XDECREF(op) py3__Py_XDECREF(_PyObject_CAST(op)) # endif -# if defined(USE_LIMITED_API) \ - && (Py_LIMITED_API+0 >= 0x030c0000 || defined(Py_REF_DEBUG)) - static inline void -py3__Py_XINCREF(PyObject *op) -{ - if (op != NULL) - { - Py_INCREF(op); - } -} +# ifdef USE_LIMITED_API +// Use stable versions of inc/dec ref. Note that these always null-check and +// therefore there's no difference between XINCREF and INCREF. +# undef Py_INCREF +# define Py_INCREF(obj) Py_IncRef((PyObject *)obj) # undef Py_XINCREF -# define Py_XINCREF(op) py3__Py_XINCREF(_PyObject_CAST(op)) +# define Py_XINCREF(obj) Py_IncRef((PyObject *)obj) + +# undef Py_DECREF +# define Py_DECREF(obj) Py_DecRef((PyObject *)obj) +# undef Py_XDECREF +# define Py_XDECREF(obj) Py_DecRef((PyObject *)obj) # endif # if PY_VERSION_HEX >= 0x030900b0 diff --git a/src/version.c b/src/version.c index db611c9695..c8c0caf59b 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 724, /**/ 723, /**/