changeset 24916:275a8ced3ba2 v8.2.2995

patch 8.2.2995: linker errors with dynamic Python 3.10 Commit: https://github.com/vim/vim/commit/90478f35a8c78e2e10a4b4a8f135998dc04c91fa Author: Zdenek Dohnal <zdohnal@redhat.com> Date: Mon Jun 14 15:08:30 2021 +0200 patch 8.2.2995: linker errors with dynamic Python 3.10 Problem: Linker errors with dynamic Python 3.10. Solution: Add a couple of library entries. (Zdenek Dohnal, closes https://github.com/vim/vim/issues/8381, closes #8356)
author Bram Moolenaar <Bram@vim.org>
date Mon, 14 Jun 2021 15:15:04 +0200
parents f98e6cded15f
children 71d44d317212
files src/if_python3.c src/version.c
diffstat 2 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/if_python3.c
+++ b/src/if_python3.c
@@ -184,6 +184,9 @@ typedef PySliceObject PySliceObject_T;
 # ifndef PyMapping_Keys
 #  define PyMapping_Keys py3_PyMapping_Keys
 # endif
+# if PY_VERSION_HEX >= 0x030a00b2
+#  define PyIter_Check py3_PyIter_Check
+# endif
 # define PyIter_Next py3_PyIter_Next
 # define PyObject_GetIter py3_PyObject_GetIter
 # define PyObject_Repr py3_PyObject_Repr
@@ -358,6 +361,9 @@ static PyObject* (*py3_PyDict_GetItemStr
 static int (*py3_PyDict_Next)(PyObject *, Py_ssize_t *, PyObject **, PyObject **);
 static PyObject* (*py3_PyLong_FromLong)(long);
 static PyObject* (*py3_PyDict_New)(void);
+# if PY_VERSION_HEX >= 0x030a00b2
+static int (*py3_PyIter_Check)(PyObject *o);
+# endif
 static PyObject* (*py3_PyIter_Next)(PyObject *);
 static PyObject* (*py3_PyObject_GetIter)(PyObject *);
 static PyObject* (*py3_PyObject_Repr)(PyObject *);
@@ -538,6 +544,9 @@ static struct
     {"PyDict_Next", (PYTHON_PROC*)&py3_PyDict_Next},
     {"PyMapping_Check", (PYTHON_PROC*)&py3_PyMapping_Check},
     {"PyMapping_Keys", (PYTHON_PROC*)&py3_PyMapping_Keys},
+# if PY_VERSION_HEX >= 0x030a00b2
+    {"PyIter_Check", (PYTHON_PROC*)&py3_PyIter_Check},
+# endif
     {"PyIter_Next", (PYTHON_PROC*)&py3_PyIter_Next},
     {"PyObject_GetIter", (PYTHON_PROC*)&py3_PyObject_GetIter},
     {"PyObject_Repr", (PYTHON_PROC*)&py3_PyObject_Repr},
@@ -671,6 +680,15 @@ py3_PyType_HasFeature(PyTypeObject *type
 #  define PyType_HasFeature(t,f) py3_PyType_HasFeature(t,f)
 # endif
 
+# if PY_VERSION_HEX >= 0x030a00b2
+    static inline int
+py3__PyObject_TypeCheck(PyObject *ob, PyTypeObject *type)
+{
+    return Py_IS_TYPE(ob, type) || PyType_IsSubtype(Py_TYPE(ob), type);
+}
+#  define _PyObject_TypeCheck(o,t) py3__PyObject_TypeCheck(o,t)
+# endif
+
 # ifdef MSWIN
 /*
  * Look up the library "libname" using the InstallPath registry key.
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2995,
+/**/
     2994,
 /**/
     2993,