/* bug #1178 - copying structs/unions > 4 bytes is broken */ #include #include typedef struct { unsigned char a; unsigned char b; unsigned char c; unsigned char d; unsigned char e; } TestStruct1; TestStruct1 StructArray1[2]; TestStruct1 test1; typedef struct { unsigned char a; unsigned char b; unsigned char c; unsigned char d; } TestStruct2; TestStruct2 StructArray2[2]; TestStruct2 test2; int res = EXIT_SUCCESS; void dotest1(void) { test1.a = 42; test1.b = 11; test1.c = 23; test1.d = 47; test1.e = 13; StructArray1[0] = test1; printf ("test1: %d, %d, %d, %d, %d\n", (int)StructArray1[0].a, (int)StructArray1[0].b, (int)StructArray1[0].c, (int)StructArray1[0].d, (int)StructArray1[0].e); if ((StructArray1[0].a != 42) || (StructArray1[0].b != 11) || (StructArray1[0].c != 23) || (StructArray1[0].d != 47) || (StructArray1[0].e != 13)) { res = EXIT_FAILURE; } } void dotest2(void) { test2.a = 42; test2.b = 11; test2.c = 23; test2.d = 47; StructArray2[0] = test2; printf ("test2: %d, %d, %d, %d\n", (int)StructArray2[0].a, (int)StructArray2[0].b, (int)StructArray2[0].c, (int)StructArray2[0].d); if ((StructArray2[0].a != 42) || (StructArray2[0].b != 11) || (StructArray2[0].c != 23) || (StructArray2[0].d != 47)) { res = EXIT_FAILURE; } } int main(void) { dotest1(); dotest2(); return res; }