# HG changeset patch # User Bram Moolenaar # Date 1623676504 -7200 # Node ID 275a8ced3ba217b04528585abfc0365c8db3971d # Parent f98e6cded15fd9f3b970b6fa83ff220c505f42a6 patch 8.2.2995: linker errors with dynamic Python 3.10 Commit: https://github.com/vim/vim/commit/90478f35a8c78e2e10a4b4a8f135998dc04c91fa Author: Zdenek Dohnal 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) diff --git a/src/if_python3.c b/src/if_python3.c --- 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. diff --git a/src/version.c b/src/version.c --- 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,