From: Victor Stinner Date: Wed, 11 May 2022 22:58:42 +0000 (+0200) Subject: gh-89653: PEP 670: Convert PyDict_GET_SIZE() macro to function (#92695) X-Git-Tag: v3.12.0a1~1572 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f9b67ad7701a4d51c0c895db4087ebd66743aa82;p=thirdparty%2FPython%2Fcpython.git gh-89653: PEP 670: Convert PyDict_GET_SIZE() macro to function (#92695) The limited C API version 3.12 no longer casts the argument. --- diff --git a/Include/cpython/dictobject.h b/Include/cpython/dictobject.h index 033eaeb4c975..f249c0e9ca5e 100644 --- a/Include/cpython/dictobject.h +++ b/Include/cpython/dictobject.h @@ -46,7 +46,15 @@ PyAPI_FUNC(int) _PyDict_Next( PyObject *mp, Py_ssize_t *pos, PyObject **key, PyObject **value, Py_hash_t *hash); /* Get the number of items of a dictionary. */ -#define PyDict_GET_SIZE(mp) (assert(PyDict_Check(mp)),((PyDictObject *)mp)->ma_used) +static inline Py_ssize_t PyDict_GET_SIZE(PyObject *op) { + assert(PyDict_Check(op)); + PyDictObject *mp = _Py_CAST(PyDictObject*, op); + return mp->ma_used; +} +#if !defined(Py_LIMITED_API) || Py_LIMITED_API+0 < 0x030c0000 +# define PyDict_GET_SIZE(op) PyDict_GET_SIZE(_PyObject_CAST(op)) +#endif + PyAPI_FUNC(int) _PyDict_Contains_KnownHash(PyObject *, PyObject *, Py_hash_t); PyAPI_FUNC(int) _PyDict_ContainsId(PyObject *, _Py_Identifier *); PyAPI_FUNC(PyObject *) _PyDict_NewPresized(Py_ssize_t minused);