]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-89653: PEP 670: Convert PyDict_GET_SIZE() macro to function (#92695)
authorVictor Stinner <vstinner@python.org>
Wed, 11 May 2022 22:58:42 +0000 (00:58 +0200)
committerGitHub <noreply@github.com>
Wed, 11 May 2022 22:58:42 +0000 (00:58 +0200)
The limited C API version 3.12 no longer casts the argument.

Include/cpython/dictobject.h

index 033eaeb4c9751c0b57991f3fe036706266a8cddc..f249c0e9ca5e2913fcb07116bec426ea56a89349 100644 (file)
@@ -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);