To: vim_dev@googlegroups.com Subject: Patch 8.2.1225 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 8.2.1225 Problem: Linker errors when building with dynamic Python 3.9. Solution: Add #defined items. (closes #6461) Files: src/if_python3.c *** ../vim-8.2.1224/src/if_python3.c 2020-07-06 21:03:02.589331536 +0200 --- src/if_python3.c 2020-07-16 22:14:10.560743269 +0200 *************** *** 203,208 **** --- 203,211 ---- # define PySys_GetObject py3_PySys_GetObject # define PySys_SetArgv py3_PySys_SetArgv # define PyType_Ready py3_PyType_Ready + # if PY_VERSION_HEX >= 0x030900b0 + # define PyType_GetFlags py3_PyType_GetFlags + # endif #undef Py_BuildValue # define Py_BuildValue py3_Py_BuildValue # define Py_SetPythonHome py3_Py_SetPythonHome *************** *** 233,238 **** --- 236,244 ---- # define PyBytes_FromString py3_PyBytes_FromString # undef PyBytes_FromStringAndSize # define PyBytes_FromStringAndSize py3_PyBytes_FromStringAndSize + # if defined(Py_DEBUG) || PY_VERSION_HEX >= 0x030900b0 + # define _Py_Dealloc py3__Py_Dealloc + # endif # define PyFloat_FromDouble py3_PyFloat_FromDouble # define PyFloat_AsDouble py3_PyFloat_AsDouble # define PyObject_GenericGetAttr py3_PyObject_GenericGetAttr *************** *** 247,253 **** # ifdef Py_DEBUG # define _Py_NegativeRefcount py3__Py_NegativeRefcount # define _Py_RefTotal (*py3__Py_RefTotal) - # define _Py_Dealloc py3__Py_Dealloc # define PyModule_Create2TraceRefs py3_PyModule_Create2TraceRefs # else # define PyModule_Create2 py3_PyModule_Create2 --- 253,258 ---- *************** *** 287,292 **** --- 292,301 ---- # define PyObject_NEW(type, typeobj) \ ( (type *) PyObject_Init( \ (PyObject *) _PyObject_DebugMalloc( _PyObject_SIZE(typeobj) ), (typeobj)) ) + # elif PY_VERSION_HEX >= 0x030900b0 + # undef PyObject_NEW + # define PyObject_NEW(type, typeobj) \ + ((type *)py3__PyObject_New(typeobj)) # endif /* *************** *** 352,357 **** --- 361,369 ---- static PyObject* (*py3_PyObject_GetItem)(PyObject *, PyObject *); static int (*py3_PyObject_IsTrue)(PyObject *); static PyObject* (*py3_Py_BuildValue)(char *, ...); + # if PY_VERSION_HEX >= 0x030900b0 + static int (*py3_PyType_GetFlags)(PyTypeObject *o); + # endif static int (*py3_PyType_Ready)(PyTypeObject *type); static int (*py3_PyDict_SetItemString)(PyObject *dp, char *key, PyObject *item); static PyObject* (*py3_PyUnicode_FromString)(const char *u); *************** *** 396,401 **** --- 408,419 ---- static int (*py3_PyBytes_AsStringAndSize)(PyObject *bytes, char **buffer, Py_ssize_t *length); static PyObject* (*py3_PyBytes_FromString)(char *str); static PyObject* (*py3_PyBytes_FromStringAndSize)(char *str, Py_ssize_t length); + # if defined(Py_DEBUG) || PY_VERSION_HEX >= 0x030900b0 + static void (*py3__Py_Dealloc)(PyObject *obj); + # endif + # if PY_VERSION_HEX >= 0x030900b0 + static PyObject* (*py3__PyObject_New)(PyTypeObject *); + # endif static PyObject* (*py3_PyFloat_FromDouble)(double num); static double (*py3_PyFloat_AsDouble)(PyObject *); static PyObject* (*py3_PyObject_GenericGetAttr)(PyObject *obj, PyObject *name); *************** *** 414,420 **** # ifdef Py_DEBUG static void (*py3__Py_NegativeRefcount)(const char *fname, int lineno, PyObject *op); static Py_ssize_t* py3__Py_RefTotal; - static void (*py3__Py_Dealloc)(PyObject *obj); static PyObject* (*py3_PyModule_Create2TraceRefs)(struct PyModuleDef* module, int module_api_version); # else static PyObject* (*py3_PyModule_Create2)(struct PyModuleDef* module, int module_api_version); --- 432,437 ---- *************** *** 525,530 **** --- 542,550 ---- {"PyObject_IsTrue", (PYTHON_PROC*)&py3_PyObject_IsTrue}, {"PyLong_FromLong", (PYTHON_PROC*)&py3_PyLong_FromLong}, {"PyDict_New", (PYTHON_PROC*)&py3_PyDict_New}, + # if PY_VERSION_HEX >= 0x030900b0 + {"PyType_GetFlags", (PYTHON_PROC*)&py3_PyType_GetFlags}, + # endif {"PyType_Ready", (PYTHON_PROC*)&py3_PyType_Ready}, {"PyDict_SetItemString", (PYTHON_PROC*)&py3_PyDict_SetItemString}, {"PyLong_AsLong", (PYTHON_PROC*)&py3_PyLong_AsLong}, *************** *** 562,567 **** --- 582,593 ---- {"PyBytes_AsStringAndSize", (PYTHON_PROC*)&py3_PyBytes_AsStringAndSize}, {"PyBytes_FromString", (PYTHON_PROC*)&py3_PyBytes_FromString}, {"PyBytes_FromStringAndSize", (PYTHON_PROC*)&py3_PyBytes_FromStringAndSize}, + # if defined(Py_DEBUG) || PY_VERSION_HEX >= 0x030900b0 + {"_Py_Dealloc", (PYTHON_PROC*)&py3__Py_Dealloc}, + # endif + # if PY_VERSION_HEX >= 0x030900b0 + {"_PyObject_New", (PYTHON_PROC*)&py3__PyObject_New}, + # endif {"PyFloat_FromDouble", (PYTHON_PROC*)&py3_PyFloat_FromDouble}, {"PyFloat_AsDouble", (PYTHON_PROC*)&py3_PyFloat_AsDouble}, {"PyObject_GenericGetAttr", (PYTHON_PROC*)&py3_PyObject_GenericGetAttr}, *************** *** 578,584 **** # ifdef Py_DEBUG {"_Py_NegativeRefcount", (PYTHON_PROC*)&py3__Py_NegativeRefcount}, {"_Py_RefTotal", (PYTHON_PROC*)&py3__Py_RefTotal}, - {"_Py_Dealloc", (PYTHON_PROC*)&py3__Py_Dealloc}, {"PyModule_Create2TraceRefs", (PYTHON_PROC*)&py3_PyModule_Create2TraceRefs}, # else {"PyModule_Create2", (PYTHON_PROC*)&py3_PyModule_Create2}, --- 604,609 ---- *************** *** 634,639 **** --- 659,673 ---- # define Py_XDECREF(op) py3__Py_XDECREF(_PyObject_CAST(op)) # endif + # if PY_VERSION_HEX >= 0x030900b0 + static inline int + py3_PyType_HasFeature(PyTypeObject *type, unsigned long feature) + { + return ((PyType_GetFlags(type) & feature) != 0); + } + # define PyType_HasFeature(t,f) py3_PyType_HasFeature(t,f) + # endif + /* * Load library and get all pointers. * Parameter 'libname' provides name of DLL. *** ../vim-8.2.1224/src/version.c 2020-07-15 22:38:52.681292060 +0200 --- src/version.c 2020-07-16 22:15:29.776557875 +0200 *************** *** 756,757 **** --- 756,759 ---- { /* Add new patch number below this line */ + /**/ + 1225, /**/ -- hundred-and-one symptoms of being an internet addict: 29. Your phone bill comes to your doorstep in a box. /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///