changeset 18414:6b8508ea90d7 v8.1.2201

patch 8.1.2201: cannot build with dynamically linked Python 3.8 Commit: https://github.com/vim/vim/commit/13a1f3fb0c9d08bba6109fe2131c9524e6ba7e15 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Oct 23 21:37:25 2019 +0200 patch 8.1.2201: cannot build with dynamically linked Python 3.8 Problem: Cannot build with dynamically linked Python 3.8. Solution: Implement py3__Py_DECREF() and py3__Py_XDECREF(). (Ken Takata, closes #4080)
author Bram Moolenaar <Bram@vim.org>
date Wed, 23 Oct 2019 21:45:03 +0200
parents 90aa634b3bff
children 52eb1bbf7690
files src/if_python3.c src/version.c
diffstat 2 files changed, 38 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -600,6 +600,42 @@ static struct
     {"", NULL},
 };
 
+# if PY_VERSION_HEX >= 0x030800f0
+    static inline void
+py3__Py_DECREF(const char *filename UNUSED, int lineno UNUSED, PyObject *op)
+{
+    _Py_DEC_REFTOTAL;
+    if (--op->ob_refcnt != 0)
+    {
+#  ifdef Py_REF_DEBUG
+	if (op->ob_refcnt < 0)
+	{
+	    _Py_NegativeRefcount(filename, lineno, op);
+	}
+#  endif
+    }
+    else
+    {
+	_Py_Dealloc(op);
+    }
+}
+
+#  undef Py_DECREF
+#  define Py_DECREF(op) py3__Py_DECREF(__FILE__, __LINE__, _PyObject_CAST(op))
+
+    static inline void
+py3__Py_XDECREF(PyObject *op)
+{
+    if (op != NULL)
+    {
+	Py_DECREF(op);
+    }
+}
+
+#  undef Py_XDECREF
+#  define Py_XDECREF(op) py3__Py_XDECREF(_PyObject_CAST(op))
+# endif
+
 /*
  * Free python.dll
  */
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2201,
+/**/
     2200,
 /**/
     2199,