www.digitalmars.com         C & C++   DMDScript  

c++ - Structure initialization corruption

```cpp
struct shortwrap{short s; inline shortwrap(short q){s=q;}};

struct pkf{
  long a;
  float b;
  shortwrap c[4];
  double d;
};

#include <stdio.h>
int main(){
  pkf t={0x33333333,0.1f,{4,{6,},8,9,},1./7};
  for(int i=0;i<sizeof t;i++){printf("%02x ",((unsigned 
char*)&t)[i]);}
}
```

Here a structure is being initialized. The expected bytes are the 
following:
`33 33 33 33 cd cc cc 3d 04 00 06 00 08 00 09 00 92 24 49 92 24 
49 c2 3f`

However, the items initialized by short initializing shortwrap 
array overwrite the start of pkf structure instead of the proper 
position.
`04 00 33 33 08 00 09 00 00 00 06 00 00 00 00 00 92 24 49 92 24 
49 c2 3f`

Notice that the 6, which is initialized directly from the 
shortwrap structure entries is initialized in the correct 
location, but 4, 8, and 9 end up corrupting structure start.
Apr 04 2023