From 934a220258404272e132e6b2d446ff740b517b8a Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 3 Apr 2024 21:40:39 +0200 Subject: [PATCH 1/3] gh-114329: Fix PyList_GetItemRef() limited C API definition --- Include/listobject.h | 2 ++ Modules/_testlimitedcapi/list.c | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/Include/listobject.h b/Include/listobject.h index 4e4084b43483a2..e1e059b0ba7466 100644 --- a/Include/listobject.h +++ b/Include/listobject.h @@ -29,7 +29,9 @@ PyAPI_FUNC(PyObject *) PyList_New(Py_ssize_t size); PyAPI_FUNC(Py_ssize_t) PyList_Size(PyObject *); PyAPI_FUNC(PyObject *) PyList_GetItem(PyObject *, Py_ssize_t); +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 >= 0x030d0000 PyAPI_FUNC(PyObject *) PyList_GetItemRef(PyObject *, Py_ssize_t); +#endif PyAPI_FUNC(int) PyList_SetItem(PyObject *, Py_ssize_t, PyObject *); PyAPI_FUNC(int) PyList_Insert(PyObject *, Py_ssize_t, PyObject *); PyAPI_FUNC(int) PyList_Append(PyObject *, PyObject *); diff --git a/Modules/_testlimitedcapi/list.c b/Modules/_testlimitedcapi/list.c index 3022cbf9191b2e..45fc2857dd40f9 100644 --- a/Modules/_testlimitedcapi/list.c +++ b/Modules/_testlimitedcapi/list.c @@ -1,3 +1,8 @@ +// Need limited C API version 3.13 for PyList_GetItemRef() +#if !defined(Py_GIL_DISABLED) && !defined(Py_LIMITED_API ) +# define Py_LIMITED_API 0x030d0000 +#endif + #include "parts.h" #include "util.h" From fdca230eb3b9de1a3d014d5bd04d39b7856d8557 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 3 Apr 2024 22:04:50 +0200 Subject: [PATCH 2/3] Add pyconfig.h include --- Modules/_testlimitedcapi/list.c | 1 + 1 file changed, 1 insertion(+) diff --git a/Modules/_testlimitedcapi/list.c b/Modules/_testlimitedcapi/list.c index 45fc2857dd40f9..e548baca3647da 100644 --- a/Modules/_testlimitedcapi/list.c +++ b/Modules/_testlimitedcapi/list.c @@ -1,4 +1,5 @@ // Need limited C API version 3.13 for PyList_GetItemRef() +#include "pyconfig.h" // Py_GIL_DISABLED #if !defined(Py_GIL_DISABLED) && !defined(Py_LIMITED_API ) # define Py_LIMITED_API 0x030d0000 #endif From a6a34b8a03ace4b0380b8e0671f7d913530a20a1 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 3 Apr 2024 22:17:39 +0200 Subject: [PATCH 3/3] Remove extra spaces --- Modules/_testlimitedcapi/heaptype_relative.c | 2 +- Modules/_testlimitedcapi/list.c | 2 +- Modules/_testlimitedcapi/object.c | 2 +- Modules/_testlimitedcapi/parts.h | 2 +- Modules/_testlimitedcapi/vectorcall_limited.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Modules/_testlimitedcapi/heaptype_relative.c b/Modules/_testlimitedcapi/heaptype_relative.c index 7c508c6182bc8a..c2531518d86a51 100644 --- a/Modules/_testlimitedcapi/heaptype_relative.c +++ b/Modules/_testlimitedcapi/heaptype_relative.c @@ -1,6 +1,6 @@ // Need limited C API version 3.12 for PyType_FromMetaclass() #include "pyconfig.h" // Py_GIL_DISABLED -#if !defined(Py_GIL_DISABLED) && !defined(Py_LIMITED_API ) +#if !defined(Py_GIL_DISABLED) && !defined(Py_LIMITED_API) # define Py_LIMITED_API 0x030c0000 #endif diff --git a/Modules/_testlimitedcapi/list.c b/Modules/_testlimitedcapi/list.c index e548baca3647da..ed492c3e719727 100644 --- a/Modules/_testlimitedcapi/list.c +++ b/Modules/_testlimitedcapi/list.c @@ -1,6 +1,6 @@ // Need limited C API version 3.13 for PyList_GetItemRef() #include "pyconfig.h" // Py_GIL_DISABLED -#if !defined(Py_GIL_DISABLED) && !defined(Py_LIMITED_API ) +#if !defined(Py_GIL_DISABLED) && !defined(Py_LIMITED_API) # define Py_LIMITED_API 0x030d0000 #endif diff --git a/Modules/_testlimitedcapi/object.c b/Modules/_testlimitedcapi/object.c index 6e438c811d6e98..da6fe3e4efa34c 100644 --- a/Modules/_testlimitedcapi/object.c +++ b/Modules/_testlimitedcapi/object.c @@ -1,6 +1,6 @@ // Need limited C API version 3.13 for Py_GetConstant() #include "pyconfig.h" // Py_GIL_DISABLED -#if !defined(Py_GIL_DISABLED) && !defined(Py_LIMITED_API ) +#if !defined(Py_GIL_DISABLED) && !defined(Py_LIMITED_API) # define Py_LIMITED_API 0x030d0000 #endif diff --git a/Modules/_testlimitedcapi/parts.h b/Modules/_testlimitedcapi/parts.h index d91f174cd31eed..d5e590a8dcd679 100644 --- a/Modules/_testlimitedcapi/parts.h +++ b/Modules/_testlimitedcapi/parts.h @@ -7,7 +7,7 @@ #include "pyconfig.h" // Py_GIL_DISABLED // Use the limited C API -#if !defined(Py_GIL_DISABLED) && !defined(Py_LIMITED_API ) +#if !defined(Py_GIL_DISABLED) && !defined(Py_LIMITED_API) // need limited C API version 3.5 for PyModule_AddFunctions() # define Py_LIMITED_API 0x03050000 #endif diff --git a/Modules/_testlimitedcapi/vectorcall_limited.c b/Modules/_testlimitedcapi/vectorcall_limited.c index 784126c17fccc1..5ef97ca8a063e1 100644 --- a/Modules/_testlimitedcapi/vectorcall_limited.c +++ b/Modules/_testlimitedcapi/vectorcall_limited.c @@ -2,7 +2,7 @@ // Need limited C API version 3.12 for PyObject_Vectorcall() #include "pyconfig.h" // Py_GIL_DISABLED -#if !defined(Py_GIL_DISABLED) && !defined(Py_LIMITED_API ) +#if !defined(Py_GIL_DISABLED) && !defined(Py_LIMITED_API) # define Py_LIMITED_API 0x030c0000 #endif