patch 9.1.1472: if_python: PySequence_Fast_{GET_SIZE,GET_ITEM} removed

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>
This commit is contained in:
Zdenek Dohnal
2025-06-19 19:35:32 +02:00
committed by Christian Brabandt
parent 5fbe72edda
commit c50f4d07c4
2 changed files with 6 additions and 4 deletions

View File

@ -2409,18 +2409,18 @@ DictionaryUpdate(DictionaryObject *self, PyObject *args, PyObject *kwargs)
Py_DECREF(item); Py_DECREF(item);
if (PySequence_Fast_GET_SIZE(fast) != 2) if (PySequence_Size(fast) != 2)
{ {
Py_DECREF(iterator); Py_DECREF(iterator);
Py_DECREF(fast); Py_DECREF(fast);
PyErr_FORMAT(PyExc_ValueError, PyErr_FORMAT(PyExc_ValueError,
N_("expected sequence element of size 2, " N_("expected sequence element of size 2, "
"but got sequence of size %d"), "but got sequence of size %d"),
(int) PySequence_Fast_GET_SIZE(fast)); (int) PySequence_Size(fast));
return NULL; return NULL;
} }
keyObject = PySequence_Fast_GET_ITEM(fast, 0); keyObject = PySequence_GetItem(fast, 0);
if (!(key = StringToChars(keyObject, &todecref))) if (!(key = StringToChars(keyObject, &todecref)))
{ {
@ -2442,7 +2442,7 @@ DictionaryUpdate(DictionaryObject *self, PyObject *args, PyObject *kwargs)
} }
di->di_tv.v_type = VAR_UNKNOWN; 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) if (ConvertFromPyObject(valObject, &di->di_tv) == -1)
{ {

View File

@ -709,6 +709,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1472,
/**/ /**/
1471, 1471,
/**/ /**/