]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-30459: Use (void) in macros setting variables (GH-28982)
authorVictor Stinner <vstinner@python.org>
Fri, 15 Oct 2021 17:44:35 +0000 (19:44 +0200)
committerGitHub <noreply@github.com>
Fri, 15 Oct 2021 17:44:35 +0000 (19:44 +0200)
Convert the result of macros setting variables to void to avoid risks
of misusing them:

* _PyGCHead_SET_NEXT()
* asdl_seq_SET()
* asdl_seq_SET_UNTYPED()

Include/internal/pycore_asdl.h
Include/internal/pycore_gc.h

index c0b07c31810b9925ffd806c443d5001069f43593..2929e030872d943500e299053ef1c4f389fe6287 100644 (file)
@@ -91,7 +91,7 @@ asdl_ ## NAME ## _seq *_Py_asdl_ ## NAME ## _seq_new(Py_ssize_t size, PyArena *a
         (S)->typed_elements[_asdl_i] = (V); \
     } while (0)
 #else
-#  define asdl_seq_SET(S, I, V) (S)->typed_elements[I] = (V)
+#  define asdl_seq_SET(S, I, V) ((void)((S)->typed_elements[I] = (V)))
 #endif
 
 #ifdef Py_DEBUG
@@ -103,7 +103,7 @@ asdl_ ## NAME ## _seq *_Py_asdl_ ## NAME ## _seq_new(Py_ssize_t size, PyArena *a
         (S)->elements[_asdl_i] = (V); \
     } while (0)
 #else
-#  define asdl_seq_SET_UNTYPED(S, I, V) (S)->elements[I] = (V)
+#  define asdl_seq_SET_UNTYPED(S, I, V) ((void)((S)->elements[I] = (V)))
 #endif
 
 #ifdef __cplusplus
index 9db4a4716fa5887b8b7b05c3d654bf57102d70e5..45e85b54c2ec2de06d819b26bc3ecea2aa556c68 100644 (file)
@@ -43,7 +43,7 @@ typedef struct {
 // Lowest bit of _gc_next is used for flags only in GC.
 // But it is always 0 for normal code.
 #define _PyGCHead_NEXT(g)        ((PyGC_Head*)(g)->_gc_next)
-#define _PyGCHead_SET_NEXT(g, p) ((g)->_gc_next = (uintptr_t)(p))
+#define _PyGCHead_SET_NEXT(g, p) ((void)((g)->_gc_next = (uintptr_t)(p)))
 
 // Lowest two bits of _gc_prev is used for _PyGC_PREV_MASK_* flags.
 #define _PyGCHead_PREV(g) ((PyGC_Head*)((g)->_gc_prev & _PyGC_PREV_MASK))
@@ -56,7 +56,7 @@ typedef struct {
 #define _PyGCHead_FINALIZED(g) \
     (((g)->_gc_prev & _PyGC_PREV_MASK_FINALIZED) != 0)
 #define _PyGCHead_SET_FINALIZED(g) \
-    ((g)->_gc_prev |= _PyGC_PREV_MASK_FINALIZED)
+    ((void)((g)->_gc_prev |= _PyGC_PREV_MASK_FINALIZED))
 
 #define _PyGC_FINALIZED(o) \
     _PyGCHead_FINALIZED(_Py_AS_GC(o))