]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.1.1472: if_python: PySequence_Fast_{GET_SIZE,GET_ITEM} removed v9.1.1472
authorZdenek Dohnal <zdohnal@redhat.com>
Thu, 19 Jun 2025 17:35:32 +0000 (19:35 +0200)
committerChristian Brabandt <cb@256bit.org>
Thu, 19 Jun 2025 17:35:32 +0000 (19:35 +0200)
Problem:  if_python: PySequence_Fast_{GET_SIZE,GET_ITEM} removed with
          python3.14 in stable ABI
Solution: use PySequence_{Size,GetItem} instead (Zdenek Dohnal)

Python 3.14 removed those two functions from stable API because of
reasoning these function shouldn't be part of stable API at the first
place.

Moving to PySequence_GetSize and PySequence_GetItem fixes the build
failure when Vim is built with dynamic Python and stable API for Python
3.8.

closes: #17575

Signed-off-by: Zdenek Dohnal <zdohnal@redhat.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
src/if_py_both.h
src/version.c

index ed66254ff3bca1a540dcb160a2b3f4f09b159899..7fc055db53dbd7023c771e1e0528617363bddd1c 100644 (file)
@@ -2409,18 +2409,18 @@ DictionaryUpdate(DictionaryObject *self, PyObject *args, PyObject *kwargs)
 
                Py_DECREF(item);
 
-               if (PySequence_Fast_GET_SIZE(fast) != 2)
+               if (PySequence_Size(fast) != 2)
                {
                    Py_DECREF(iterator);
                    Py_DECREF(fast);
                    PyErr_FORMAT(PyExc_ValueError,
                            N_("expected sequence element of size 2, "
                            "but got sequence of size %d"),
-                           (int) PySequence_Fast_GET_SIZE(fast));
+                           (int) PySequence_Size(fast));
                    return NULL;
                }
 
-               keyObject = PySequence_Fast_GET_ITEM(fast, 0);
+               keyObject = PySequence_GetItem(fast, 0);
 
                if (!(key = StringToChars(keyObject, &todecref)))
                {
@@ -2442,7 +2442,7 @@ DictionaryUpdate(DictionaryObject *self, PyObject *args, PyObject *kwargs)
                }
                di->di_tv.v_type = VAR_UNKNOWN;
 
-               valObject = PySequence_Fast_GET_ITEM(fast, 1);
+               valObject = PySequence_GetItem(fast, 1);
 
                if (ConvertFromPyObject(valObject, &di->di_tv) == -1)
                {
index 52fdfc361a6642081e8138a417a798831352df80..e8673ed06c9aa2e1bf429545c08d886b9c94edb2 100644 (file)
@@ -709,6 +709,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1472,
 /**/
     1471,
 /**/