From: Victor Stinner Date: Sun, 25 Nov 2018 22:30:32 +0000 (+0100) Subject: bpo-35081: Add _PyTuple_CAST() (GH-10704) X-Git-Tag: v3.8.0a1~433 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8ac6539d85b481fc6b5e9145446b07e591b2caba;p=thirdparty%2FPython%2Fcpython.git bpo-35081: Add _PyTuple_CAST() (GH-10704) --- 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) #endif /* 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) #endif PyAPI_FUNC(int) PyTuple_ClearFreeList(void);