From: Victor Stinner Date: Wed, 11 May 2022 22:01:42 +0000 (+0200) Subject: gh-89653: PEP 670: Limited API doesn't cast arguments (#92654) X-Git-Tag: v3.12.0a1~1577 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7d3b469e475e6e52ce4f0bad7198bb05ead77b1d;p=thirdparty%2FPython%2Fcpython.git gh-89653: PEP 670: Limited API doesn't cast arguments (#92654) The limited API version 3.11 no longer casts arguments to expected types of functions of functions: * PyList_GET_SIZE(), PyList_SET_ITEM() * PyTuple_GET_SIZE(), PyTuple_SET_ITEM() * PyWeakref_GET_OBJECT() --- diff --git a/Include/cpython/listobject.h b/Include/cpython/listobject.h index ebbea5ebf1eb..4989cccef9f8 100644 --- a/Include/cpython/listobject.h +++ b/Include/cpython/listobject.h @@ -33,7 +33,9 @@ PyAPI_FUNC(void) _PyList_DebugMallocStats(FILE *out); static inline Py_ssize_t PyList_GET_SIZE(PyListObject *op) { return Py_SIZE(op); } -#define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyList_CAST(op)) +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000 +# define PyList_GET_SIZE(op) PyList_GET_SIZE(_PyList_CAST(op)) +#endif #define PyList_GET_ITEM(op, index) (_PyList_CAST(op)->ob_item[index]) @@ -41,5 +43,7 @@ static inline void PyList_SET_ITEM(PyListObject *op, Py_ssize_t index, PyObject *value) { op->ob_item[index] = value; } +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000 #define PyList_SET_ITEM(op, index, value) \ PyList_SET_ITEM(_PyList_CAST(op), index, _PyObject_CAST(value)) +#endif diff --git a/Include/cpython/tupleobject.h b/Include/cpython/tupleobject.h index d5b810e5f427..a41cee1759d4 100644 --- a/Include/cpython/tupleobject.h +++ b/Include/cpython/tupleobject.h @@ -22,7 +22,9 @@ PyAPI_FUNC(void) _PyTuple_MaybeUntrack(PyObject *); static inline Py_ssize_t PyTuple_GET_SIZE(PyTupleObject *op) { return Py_SIZE(op); } -#define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyTuple_CAST(op)) +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000 +# define PyTuple_GET_SIZE(op) PyTuple_GET_SIZE(_PyTuple_CAST(op)) +#endif #define PyTuple_GET_ITEM(op, index) (_PyTuple_CAST(op)->ob_item[index]) @@ -31,7 +33,9 @@ static inline void PyTuple_SET_ITEM(PyTupleObject *op, Py_ssize_t index, PyObject *value) { op->ob_item[index] = value; } +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000 #define PyTuple_SET_ITEM(op, index, value) \ PyTuple_SET_ITEM(_PyTuple_CAST(op), index, _PyObject_CAST(value)) +#endif PyAPI_FUNC(void) _PyTuple_DebugMallocStats(FILE *out); diff --git a/Include/cpython/weakrefobject.h b/Include/cpython/weakrefobject.h index bec69ba90d6b..2dbef2cea376 100644 --- a/Include/cpython/weakrefobject.h +++ b/Include/cpython/weakrefobject.h @@ -51,4 +51,6 @@ static inline PyObject* PyWeakref_GET_OBJECT(PyObject *ref_obj) { } return Py_None; } -#define PyWeakref_GET_OBJECT(ref) PyWeakref_GET_OBJECT(_PyObject_CAST(ref)) +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030b0000 +# define PyWeakref_GET_OBJECT(ref) PyWeakref_GET_OBJECT(_PyObject_CAST(ref)) +#endif