typelib: Fix invalid alignment assumptions

The current source has invalid assumptions about structure alignment
that break on platforms like m68k where 32-bit integers are aligned to
16-bit only. Fix this by introducing explicit structure padding for
32-bit quantities following odd numbers of 16-bit quantities and
structure trail padding, to make the binary representation generated
by the compiler match the text of the specification exactly.

https://bugzilla.gnome.org/show_bug.cgi?id=661839
This commit is contained in:
Thorsten Glaser 2012-02-08 09:02:37 -05:00 committed by Colin Walters
parent c2d79efd53
commit 87857869e9

View File

@ -282,7 +282,7 @@ typedef struct {
guint32 sections;
/* <private> */
guint16 padding[5];
guint16 padding[6];
} Header;
typedef enum {
@ -434,6 +434,10 @@ typedef struct {
gint8 closure;
gint8 destroy;
/* <private> */
guint16 padding;
/* <public> */
SimpleTypeBlob arg_type;
} ArgBlob;
@ -1051,6 +1055,8 @@ typedef struct {
guint16 n_vfuncs;
guint16 n_constants;
guint16 padding;
guint32 reserved2;
guint32 reserved3;