]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-45476: Disallow using asdl_seq_GET() as l-value (GH-29866)
authorVictor Stinner <vstinner@python.org>
Tue, 30 Nov 2021 14:13:55 +0000 (15:13 +0100)
committerGitHub <noreply@github.com>
Tue, 30 Nov 2021 14:13:55 +0000 (15:13 +0100)
The following internal macros can not longer be used as l-value:

* asdl_seq_GET()
* asdl_seq_GET_UNTYPED()
* asdl_seq_LEN()

They are modified to use the _Py_RVALUE() macro.

Include/internal/pycore_asdl.h

index d00a7f04e6d0026b5b89739351210e9ee13b1b8f..5b01c7a66599e916f25fe5a7859d149db4a87fdc 100644 (file)
@@ -78,9 +78,9 @@ asdl_ ## NAME ## _seq *_Py_asdl_ ## NAME ## _seq_new(Py_ssize_t size, PyArena *a
     return seq; \
 }
 
-#define asdl_seq_GET_UNTYPED(S, I) (S)->elements[(I)]
-#define asdl_seq_GET(S, I) (S)->typed_elements[(I)]
-#define asdl_seq_LEN(S) ((S) == NULL ? 0 : (S)->size)
+#define asdl_seq_GET_UNTYPED(S, I) _Py_RVALUE((S)->elements[(I)])
+#define asdl_seq_GET(S, I) _Py_RVALUE((S)->typed_elements[(I)])
+#define asdl_seq_LEN(S) _Py_RVALUE(((S) == NULL ? 0 : (S)->size))
 
 #ifdef Py_DEBUG
 #  define asdl_seq_SET(S, I, V) \