ddraw.h structure alignment
Markus Stockhausen
markus.stockhausen at collogia.de
Sun Oct 11 10:20:53 CDT 2009
Am Sonntag, den 11.10.2009, 17:15 +0200 schrieb Stefan Dösinger:
> Does a pragma pack fix the issue? If yes, then that's probably the
> correct fix.
>
> Its probably worth writing a test that allocates e.g. a char data[64],
> then passes this to GetDeviceIdentifier, fill it with non-zero data,
> and check how much is overwritten.
>
> Otoh I find it strange that the struct is aligned to 8 bytes. Are you
> running wine in 64 bit? Or do you have some other compiler flags that
> make the compiler use 8 byte alignment?
>
You are right.
- I'm working on 64 bit (gcc 4.3.3)
- #pragma pack(push,4) / #pragma pack(pop) around DDDEVICEIDENTIFIER2
fixes the behaviour
- a testcase fails without pragma:
ok(sizeof(DDDEVICEIDENTIFIER2)==0x42c, "DDDEVICEIDENTIFIER2 too large
(misaligned)\n");
I'll send a patch
More information about the wine-devel
mailing list