:ref:`Python Path Configuration. <init-path-config>`.
(Contributed by Victor Stinner in :issue:`42260`.)
+* :c:func:`PyList_SET_ITEM`, :c:func:`PyTuple_SET_ITEM` and
+ :c:func:`PyCell_SET` macros can no longer be used as l-value or r-value.
+ For example, ``x = PyList_SET_ITEM(a, b, c)`` and
+ ``PyList_SET_ITEM(a, b, c) = x`` now fail with a compiler error. It prevents
+ bugs like ``if (PyList_SET_ITEM (a, b, c) < 0) ...`` test.
+ (Contributed by Zackery Spytz and Victor Stinner in :issue:`30459`.)
+
Deprecated
----------
PyAPI_FUNC(int) PyCell_Set(PyObject *, PyObject *);
#define PyCell_GET(op) (((PyCellObject *)(op))->ob_ref)
-#define PyCell_SET(op, v) (((PyCellObject *)(op))->ob_ref = v)
+#define PyCell_SET(op, v) ((void)(((PyCellObject *)(op))->ob_ref = v))
#ifdef __cplusplus
}
-Cast the result of :c:func:`PyList_SET_ITEM` and :c:func:`PyTuple_SET_ITEM`
-to void.
+:c:func:`PyList_SET_ITEM`, :c:func:`PyTuple_SET_ITEM` and :c:func:`PyCell_SET`
+macros can no longer be used as l-value or r-value. For example,
+``x = PyList_SET_ITEM(a, b, c)`` and ``PyList_SET_ITEM(a, b, c) = x`` now fail
+with a compiler error. It prevents bugs like
+``if (PyList_SET_ITEM (a, b, c) < 0) ...`` test.
+Patch by Zackery Spytz and Victor Stinner.