[Python-checkins] bpo-35081: Add _PyTuple_CAST() (GH-10704)

Victor Stinner webhook-mailer at python.org
Sun Nov 25 17:30:35 EST 2018

commit: 8ac6539d85b481fc6b5e9145446b07e591b2caba
branch: master
author: Victor Stinner <vstinner at redhat.com>
committer: GitHub <noreply at github.com>
date: 2018-11-25T23:30:32+01:00

bpo-35081: Add _PyTuple_CAST() (GH-10704)

M Include/tupleobject.h

diff --git a/Include/tupleobject.h b/Include/tupleobject.h
index 257e05aeae8f..a150d07d3e0a 100644
--- a/Include/tupleobject.h
+++ b/Include/tupleobject.h
@@ -55,15 +55,18 @@ PyAPI_FUNC(void) _PyTuple_MaybeUntrack(PyObject *);
 /* Macro, trading safety for speed */
 #ifndef Py_LIMITED_API
-#define PyTuple_GET_ITEM(op, i) (((PyTupleObject *)(op))->ob_item[i])
-#define PyTuple_GET_SIZE(op)    (assert(PyTuple_Check(op)),Py_SIZE(op))
+/* Cast argument to PyTupleObject* type. */
+#define _PyTuple_CAST(op) ((PyTupleObject *)(op))
+#define PyTuple_GET_ITEM(op, i) (_PyTuple_CAST(op)->ob_item[i])
+#define PyTuple_GET_SIZE(op)    (assert(PyTuple_Check(op)), Py_SIZE(op))
 #ifdef Py_BUILD_CORE
-#  define _PyTuple_ITEMS(op) ((((PyTupleObject *)(op))->ob_item))
+#  define _PyTuple_ITEMS(op) (_PyTuple_CAST(op)->ob_item)
 /* Macro, *only* to be used to fill in brand new tuples */
-#define PyTuple_SET_ITEM(op, i, v) (((PyTupleObject *)(op))->ob_item[i] = v)
+#define PyTuple_SET_ITEM(op, i, v) (_PyTuple_CAST(op)->ob_item[i] = v)
 PyAPI_FUNC(int) PyTuple_ClearFreeList(void);

More information about the Python-checkins mailing list