]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-128889: Zero out memory ctypes for generated struct layout tests (GH-128944)
authorPetr Viktorin <encukou@gmail.com>
Tue, 21 Jan 2025 15:29:02 +0000 (16:29 +0100)
committerGitHub <noreply@github.com>
Tue, 21 Jan 2025 15:29:02 +0000 (16:29 +0100)
Lib/test/test_ctypes/test_generated_structs.py
Modules/_ctypes/_ctypes_test_generated.c.h

index d61754d6d49e70c2a010c9dd86b9178a920804db..1df9f0dc16368fb19baf4394dfb5e37b7561b74b 100644 (file)
@@ -443,7 +443,7 @@ class GeneratedTest(unittest.TestCase):
         - None
         - reason to skip the test (str)
 
-        This does depend on the C compiler keeping padding bits zero.
+        This does depend on the C compiler keeping padding bits unchanged.
         Common compilers seem to do so.
         """
         for name, cls in TESTCASES.items():
@@ -696,7 +696,8 @@ if __name__ == '__main__':
             output('                ' + line)
         typename = f'{struct_or_union(cls)} {name}'
         output(f"""
-                {typename} value = {{0}};
+                {typename} value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString({c_str_repr(name)}));
                 APPEND(PyLong_FromLong(sizeof({typename})));
                 APPEND(PyLong_FromLong(_Alignof({typename})));
index 46a3e4b01e22590162f6017b0f7e5b9e8cf269fd..d70b33eaa8b515962943bcd63a12b1d139983e55 100644 (file)
@@ -56,7 +56,8 @@
                 struct SingleInt {
                     int a;
                 };
-                struct SingleInt value = {0};
+                struct SingleInt value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("SingleInt"));
                 APPEND(PyLong_FromLong(sizeof(struct SingleInt)));
                 APPEND(PyLong_FromLong(_Alignof(struct SingleInt)));
@@ -69,7 +70,8 @@
                 union SingleInt_Union {
                     int a;
                 };
-                union SingleInt_Union value = {0};
+                union SingleInt_Union value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("SingleInt_Union"));
                 APPEND(PyLong_FromLong(sizeof(union SingleInt_Union)));
                 APPEND(PyLong_FromLong(_Alignof(union SingleInt_Union)));
@@ -82,7 +84,8 @@
                 struct SingleU32 {
                     uint32_t a;
                 };
-                struct SingleU32 value = {0};
+                struct SingleU32 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("SingleU32"));
                 APPEND(PyLong_FromLong(sizeof(struct SingleU32)));
                 APPEND(PyLong_FromLong(_Alignof(struct SingleU32)));
                     int8_t y;
                     uint16_t z;
                 };
-                struct SimpleStruct value = {0};
+                struct SimpleStruct value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("SimpleStruct"));
                 APPEND(PyLong_FromLong(sizeof(struct SimpleStruct)));
                 APPEND(PyLong_FromLong(_Alignof(struct SimpleStruct)));
                     int8_t y;
                     uint16_t z;
                 };
-                union SimpleUnion value = {0};
+                union SimpleUnion value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("SimpleUnion"));
                 APPEND(PyLong_FromLong(sizeof(union SimpleUnion)));
                 APPEND(PyLong_FromLong(_Alignof(union SimpleUnion)));
                     int64_t i64;
                     uint64_t u64;
                 };
-                struct ManyTypes value = {0};
+                struct ManyTypes value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("ManyTypes"));
                 APPEND(PyLong_FromLong(sizeof(struct ManyTypes)));
                 APPEND(PyLong_FromLong(_Alignof(struct ManyTypes)));
                     int64_t i64;
                     uint64_t u64;
                 };
-                union ManyTypesU value = {0};
+                union ManyTypesU value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("ManyTypesU"));
                 APPEND(PyLong_FromLong(sizeof(union ManyTypesU)));
                 APPEND(PyLong_FromLong(_Alignof(union ManyTypesU)));
                         uint16_t z;
                     };
                 };
-                struct Nested value = {0};
+                struct Nested value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Nested"));
                 APPEND(PyLong_FromLong(sizeof(struct Nested)));
                 APPEND(PyLong_FromLong(_Alignof(struct Nested)));
                     int64_t b;
                 };
                 #pragma pack(pop)
-                struct Packed1 value = {0};
+                struct Packed1 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Packed1"));
                 APPEND(PyLong_FromLong(sizeof(struct Packed1)));
                 APPEND(PyLong_FromLong(_Alignof(struct Packed1)));
                     int64_t b;
                 };
                 #pragma pack(pop)
-                struct Packed2 value = {0};
+                struct Packed2 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Packed2"));
                 APPEND(PyLong_FromLong(sizeof(struct Packed2)));
                 APPEND(PyLong_FromLong(_Alignof(struct Packed2)));
                     int64_t b;
                 };
                 #pragma pack(pop)
-                struct Packed3 value = {0};
+                struct Packed3 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Packed3"));
                 APPEND(PyLong_FromLong(sizeof(struct Packed3)));
                 APPEND(PyLong_FromLong(_Alignof(struct Packed3)));
                     int64_t b;
                 };
                 #pragma pack(pop)
-                struct Packed4 value = {0};
+                struct Packed4 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Packed4"));
                 APPEND(PyLong_FromLong(sizeof(struct Packed4)));
                 APPEND(PyLong_FromLong(_Alignof(struct Packed4)));
                     int64_t b;
                     int32_t c;
                 };
-                struct X86_32EdgeCase value = {0};
+                struct X86_32EdgeCase value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("X86_32EdgeCase"));
                 APPEND(PyLong_FromLong(sizeof(struct X86_32EdgeCase)));
                 APPEND(PyLong_FromLong(_Alignof(struct X86_32EdgeCase)));
                     unsigned int b :5;
                     unsigned int c :7;
                 };
-                struct MSBitFieldExample value = {0};
+                struct MSBitFieldExample value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("MSBitFieldExample"));
                 APPEND(PyLong_FromLong(sizeof(struct MSBitFieldExample)));
                 APPEND(PyLong_FromLong(_Alignof(struct MSBitFieldExample)));
                     unsigned int may_straddle :30;
                     unsigned int last :18;
                 };
-                struct MSStraddlingExample value = {0};
+                struct MSStraddlingExample value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("MSStraddlingExample"));
                 APPEND(PyLong_FromLong(sizeof(struct MSStraddlingExample)));
                 APPEND(PyLong_FromLong(_Alignof(struct MSStraddlingExample)));
                     int H :8;
                     int I :9;
                 };
-                struct IntBits value = {0};
+                struct IntBits value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("IntBits"));
                 APPEND(PyLong_FromLong(sizeof(struct IntBits)));
                 APPEND(PyLong_FromLong(_Alignof(struct IntBits)));
                     short R :6;
                     short S :7;
                 };
-                struct Bits value = {0};
+                struct Bits value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Bits"));
                 APPEND(PyLong_FromLong(sizeof(struct Bits)));
                 APPEND(PyLong_FromLong(_Alignof(struct Bits)));
                     int H :8;
                     int I :9;
                 };
-                struct IntBits_MSVC value = {0};
+                struct IntBits_MSVC value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("IntBits_MSVC"));
                 APPEND(PyLong_FromLong(sizeof(struct IntBits_MSVC)));
                 APPEND(PyLong_FromLong(_Alignof(struct IntBits_MSVC)));
                     short R :6;
                     short S :7;
                 };
-                struct Bits_MSVC value = {0};
+                struct Bits_MSVC value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Bits_MSVC"));
                 APPEND(PyLong_FromLong(sizeof(struct Bits_MSVC)));
                 APPEND(PyLong_FromLong(_Alignof(struct Bits_MSVC)));
                     int64_t b :62;
                     int64_t c :1;
                 };
-                struct I64Bits value = {0};
+                struct I64Bits value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("I64Bits"));
                 APPEND(PyLong_FromLong(sizeof(struct I64Bits)));
                 APPEND(PyLong_FromLong(_Alignof(struct I64Bits)));
                     uint64_t b :62;
                     uint64_t c :1;
                 };
-                struct U64Bits value = {0};
+                struct U64Bits value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("U64Bits"));
                 APPEND(PyLong_FromLong(sizeof(struct U64Bits)));
                 APPEND(PyLong_FromLong(_Alignof(struct U64Bits)));
                     int8_t b :3;
                     int8_t c :1;
                 };
-                struct Struct331_8 value = {0};
+                struct Struct331_8 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct331_8"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct331_8)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct331_8)));
                     int8_t b :6;
                     int8_t c :1;
                 };
-                struct Struct1x1_8 value = {0};
+                struct Struct1x1_8 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1x1_8"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1x1_8)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1x1_8)));
                     int8_t b :6;
                     int8_t c :1;
                 };
-                struct Struct1nx1_8 value = {0};
+                struct Struct1nx1_8 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1nx1_8"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1nx1_8)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1nx1_8)));
                     int8_t b :6;
                     int8_t c :6;
                 };
-                struct Struct3xx_8 value = {0};
+                struct Struct3xx_8 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct3xx_8"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct3xx_8)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct3xx_8)));
                     uint8_t b :3;
                     uint8_t c :1;
                 };
-                struct Struct331_u8 value = {0};
+                struct Struct331_u8 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct331_u8"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct331_u8)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct331_u8)));
                     uint8_t b :6;
                     uint8_t c :1;
                 };
-                struct Struct1x1_u8 value = {0};
+                struct Struct1x1_u8 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1x1_u8"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1x1_u8)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1x1_u8)));
                     uint8_t b :6;
                     uint8_t c :1;
                 };
-                struct Struct1nx1_u8 value = {0};
+                struct Struct1nx1_u8 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1nx1_u8"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1nx1_u8)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1nx1_u8)));
                     uint8_t b :6;
                     uint8_t c :6;
                 };
-                struct Struct3xx_u8 value = {0};
+                struct Struct3xx_u8 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct3xx_u8"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct3xx_u8)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct3xx_u8)));
                     int16_t b :3;
                     int16_t c :1;
                 };
-                struct Struct331_16 value = {0};
+                struct Struct331_16 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct331_16"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct331_16)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct331_16)));
                     int16_t b :14;
                     int16_t c :1;
                 };
-                struct Struct1x1_16 value = {0};
+                struct Struct1x1_16 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1x1_16"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1x1_16)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1x1_16)));
                     int16_t b :14;
                     int16_t c :1;
                 };
-                struct Struct1nx1_16 value = {0};
+                struct Struct1nx1_16 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1nx1_16"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1nx1_16)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1nx1_16)));
                     int16_t b :14;
                     int16_t c :14;
                 };
-                struct Struct3xx_16 value = {0};
+                struct Struct3xx_16 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct3xx_16"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct3xx_16)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct3xx_16)));
                     uint16_t b :3;
                     uint16_t c :1;
                 };
-                struct Struct331_u16 value = {0};
+                struct Struct331_u16 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct331_u16"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct331_u16)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct331_u16)));
                     uint16_t b :14;
                     uint16_t c :1;
                 };
-                struct Struct1x1_u16 value = {0};
+                struct Struct1x1_u16 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1x1_u16"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1x1_u16)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1x1_u16)));
                     uint16_t b :14;
                     uint16_t c :1;
                 };
-                struct Struct1nx1_u16 value = {0};
+                struct Struct1nx1_u16 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1nx1_u16"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1nx1_u16)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1nx1_u16)));
                     uint16_t b :14;
                     uint16_t c :14;
                 };
-                struct Struct3xx_u16 value = {0};
+                struct Struct3xx_u16 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct3xx_u16"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct3xx_u16)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct3xx_u16)));
                     int32_t b :3;
                     int32_t c :1;
                 };
-                struct Struct331_32 value = {0};
+                struct Struct331_32 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct331_32"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct331_32)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct331_32)));
                     int32_t b :30;
                     int32_t c :1;
                 };
-                struct Struct1x1_32 value = {0};
+                struct Struct1x1_32 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1x1_32"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1x1_32)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1x1_32)));
                     int32_t b :30;
                     int32_t c :1;
                 };
-                struct Struct1nx1_32 value = {0};
+                struct Struct1nx1_32 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1nx1_32"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1nx1_32)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1nx1_32)));
                     int32_t b :30;
                     int32_t c :30;
                 };
-                struct Struct3xx_32 value = {0};
+                struct Struct3xx_32 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct3xx_32"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct3xx_32)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct3xx_32)));
                     uint32_t b :3;
                     uint32_t c :1;
                 };
-                struct Struct331_u32 value = {0};
+                struct Struct331_u32 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct331_u32"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct331_u32)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct331_u32)));
                     uint32_t b :30;
                     uint32_t c :1;
                 };
-                struct Struct1x1_u32 value = {0};
+                struct Struct1x1_u32 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1x1_u32"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1x1_u32)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1x1_u32)));
                     uint32_t b :30;
                     uint32_t c :1;
                 };
-                struct Struct1nx1_u32 value = {0};
+                struct Struct1nx1_u32 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1nx1_u32"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1nx1_u32)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1nx1_u32)));
                     uint32_t b :30;
                     uint32_t c :30;
                 };
-                struct Struct3xx_u32 value = {0};
+                struct Struct3xx_u32 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct3xx_u32"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct3xx_u32)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct3xx_u32)));
                     int64_t b :3;
                     int64_t c :1;
                 };
-                struct Struct331_64 value = {0};
+                struct Struct331_64 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct331_64"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct331_64)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct331_64)));
                     int64_t b :62;
                     int64_t c :1;
                 };
-                struct Struct1x1_64 value = {0};
+                struct Struct1x1_64 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1x1_64"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1x1_64)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1x1_64)));
                     int64_t b :62;
                     int64_t c :1;
                 };
-                struct Struct1nx1_64 value = {0};
+                struct Struct1nx1_64 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1nx1_64"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1nx1_64)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1nx1_64)));
                     int64_t b :62;
                     int64_t c :62;
                 };
-                struct Struct3xx_64 value = {0};
+                struct Struct3xx_64 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct3xx_64"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct3xx_64)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct3xx_64)));
                     uint64_t b :3;
                     uint64_t c :1;
                 };
-                struct Struct331_u64 value = {0};
+                struct Struct331_u64 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct331_u64"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct331_u64)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct331_u64)));
                     uint64_t b :62;
                     uint64_t c :1;
                 };
-                struct Struct1x1_u64 value = {0};
+                struct Struct1x1_u64 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1x1_u64"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1x1_u64)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1x1_u64)));
                     uint64_t b :62;
                     uint64_t c :1;
                 };
-                struct Struct1nx1_u64 value = {0};
+                struct Struct1nx1_u64 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct1nx1_u64"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct1nx1_u64)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct1nx1_u64)));
                     uint64_t b :62;
                     uint64_t c :62;
                 };
-                struct Struct3xx_u64 value = {0};
+                struct Struct3xx_u64 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Struct3xx_u64"));
                 APPEND(PyLong_FromLong(sizeof(struct Struct3xx_u64)));
                 APPEND(PyLong_FromLong(_Alignof(struct Struct3xx_u64)));
                     signed char a :4;
                     int b :4;
                 };
-                struct Mixed1 value = {0};
+                struct Mixed1 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Mixed1"));
                 APPEND(PyLong_FromLong(sizeof(struct Mixed1)));
                 APPEND(PyLong_FromLong(_Alignof(struct Mixed1)));
                     signed char a :4;
                     int32_t b :32;
                 };
-                struct Mixed2 value = {0};
+                struct Mixed2 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Mixed2"));
                 APPEND(PyLong_FromLong(sizeof(struct Mixed2)));
                 APPEND(PyLong_FromLong(_Alignof(struct Mixed2)));
                     signed char a :4;
                     unsigned char b :4;
                 };
-                struct Mixed3 value = {0};
+                struct Mixed3 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Mixed3"));
                 APPEND(PyLong_FromLong(sizeof(struct Mixed3)));
                 APPEND(PyLong_FromLong(_Alignof(struct Mixed3)));
                     short e :4;
                     int f :24;
                 };
-                struct Mixed4 value = {0};
+                struct Mixed4 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Mixed4"));
                 APPEND(PyLong_FromLong(sizeof(struct Mixed4)));
                 APPEND(PyLong_FromLong(_Alignof(struct Mixed4)));
                     unsigned int A :1;
                     unsigned short B :16;
                 };
-                struct Mixed5 value = {0};
+                struct Mixed5 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Mixed5"));
                 APPEND(PyLong_FromLong(sizeof(struct Mixed5)));
                 APPEND(PyLong_FromLong(_Alignof(struct Mixed5)));
                     unsigned long long A :1;
                     unsigned int B :32;
                 };
-                struct Mixed6 value = {0};
+                struct Mixed6 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Mixed6"));
                 APPEND(PyLong_FromLong(sizeof(struct Mixed6)));
                 APPEND(PyLong_FromLong(_Alignof(struct Mixed6)));
                     uint32_t B :20;
                     uint64_t C :24;
                 };
-                struct Mixed7 value = {0};
+                struct Mixed7 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Mixed7"));
                 APPEND(PyLong_FromLong(sizeof(struct Mixed7)));
                 APPEND(PyLong_FromLong(_Alignof(struct Mixed7)));
                     uint32_t B :32;
                     unsigned long long C :1;
                 };
-                struct Mixed8_a value = {0};
+                struct Mixed8_a value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Mixed8_a"));
                 APPEND(PyLong_FromLong(sizeof(struct Mixed8_a)));
                 APPEND(PyLong_FromLong(_Alignof(struct Mixed8_a)));
                     uint32_t B;
                     unsigned long long C :1;
                 };
-                struct Mixed8_b value = {0};
+                struct Mixed8_b value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Mixed8_b"));
                 APPEND(PyLong_FromLong(sizeof(struct Mixed8_b)));
                 APPEND(PyLong_FromLong(_Alignof(struct Mixed8_b)));
                     uint8_t A;
                     uint32_t B :1;
                 };
-                struct Mixed9 value = {0};
+                struct Mixed9 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Mixed9"));
                 APPEND(PyLong_FromLong(sizeof(struct Mixed9)));
                 APPEND(PyLong_FromLong(_Alignof(struct Mixed9)));
                     uint32_t A :1;
                     uint64_t B :1;
                 };
-                struct Mixed10 value = {0};
+                struct Mixed10 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Mixed10"));
                 APPEND(PyLong_FromLong(sizeof(struct Mixed10)));
                 APPEND(PyLong_FromLong(_Alignof(struct Mixed10)));
                     uint32_t A :1;
                     uint64_t B :1;
                 };
-                struct Example_gh_95496 value = {0};
+                struct Example_gh_95496 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Example_gh_95496"));
                 APPEND(PyLong_FromLong(sizeof(struct Example_gh_95496)));
                 APPEND(PyLong_FromLong(_Alignof(struct Example_gh_95496)));
                     uint16_t b1 :12;
                 };
                 #pragma pack(pop)
-                struct Example_gh_84039_bad value = {0};
+                struct Example_gh_84039_bad value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Example_gh_84039_bad"));
                 APPEND(PyLong_FromLong(sizeof(struct Example_gh_84039_bad)));
                 APPEND(PyLong_FromLong(_Alignof(struct Example_gh_84039_bad)));
                     uint8_t a7 :1;
                 };
                 #pragma pack(pop)
-                struct Example_gh_84039_good_a value = {0};
+                struct Example_gh_84039_good_a value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Example_gh_84039_good_a"));
                 APPEND(PyLong_FromLong(sizeof(struct Example_gh_84039_good_a)));
                 APPEND(PyLong_FromLong(_Alignof(struct Example_gh_84039_good_a)));
                     uint16_t b1 :12;
                 };
                 #pragma pack(pop)
-                struct Example_gh_84039_good value = {0};
+                struct Example_gh_84039_good value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Example_gh_84039_good"));
                 APPEND(PyLong_FromLong(sizeof(struct Example_gh_84039_good)));
                 APPEND(PyLong_FromLong(_Alignof(struct Example_gh_84039_good)));
                     uint32_t R2 :2;
                 };
                 #pragma pack(pop)
-                struct Example_gh_73939 value = {0};
+                struct Example_gh_73939 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Example_gh_73939"));
                 APPEND(PyLong_FromLong(sizeof(struct Example_gh_73939)));
                 APPEND(PyLong_FromLong(_Alignof(struct Example_gh_73939)));
                     uint8_t b :8;
                     uint32_t c :16;
                 };
-                struct Example_gh_86098 value = {0};
+                struct Example_gh_86098 value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Example_gh_86098"));
                 APPEND(PyLong_FromLong(sizeof(struct Example_gh_86098)));
                 APPEND(PyLong_FromLong(_Alignof(struct Example_gh_86098)));
                     uint32_t c :16;
                 };
                 #pragma pack(pop)
-                struct Example_gh_86098_pack value = {0};
+                struct Example_gh_86098_pack value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("Example_gh_86098_pack"));
                 APPEND(PyLong_FromLong(sizeof(struct Example_gh_86098_pack)));
                 APPEND(PyLong_FromLong(_Alignof(struct Example_gh_86098_pack)));
                     };
                     signed char y;
                 };
-                struct AnonBitfields value = {0};
+                struct AnonBitfields value;
+                memset(&value, 0, sizeof(value));
                 APPEND(PyUnicode_FromString("AnonBitfields"));
                 APPEND(PyLong_FromLong(sizeof(struct AnonBitfields)));
                 APPEND(PyLong_FromLong(_Alignof(struct AnonBitfields)));