From 87857869e980643d17805773a337215ae430877e Mon Sep 17 00:00:00 2001 From: Thorsten Glaser Date: Wed, 8 Feb 2012 09:02:37 -0500 Subject: [PATCH] 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 --- gitypelib-internal.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gitypelib-internal.h b/gitypelib-internal.h index 08fb8500f..ed8e6792d 100644 --- a/gitypelib-internal.h +++ b/gitypelib-internal.h @@ -282,7 +282,7 @@ typedef struct { guint32 sections; /* */ - guint16 padding[5]; + guint16 padding[6]; } Header; typedef enum { @@ -434,6 +434,10 @@ typedef struct { gint8 closure; gint8 destroy; + /* */ + guint16 padding; + /* */ + SimpleTypeBlob arg_type; } ArgBlob; @@ -1051,6 +1055,8 @@ typedef struct { guint16 n_vfuncs; guint16 n_constants; + guint16 padding; + guint32 reserved2; guint32 reserved3;