From d81407611b160ebfa631556ee60be147d1c0416f Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 1 May 2012 19:28:27 -0700 Subject: [PATCH] Deal with architectures where ALIGNOF_DOUBLE < 4 This patch isn't really tested as I don't have such a machine, but I have a bug report that on m68k machines, double values are aligned on smaller than 4 byte boundaries. If ALIGNOF_DOUBLE < sizeof(int), the "expected" sizeof of FcValue is miscomputed. Use the maximum of 4 (sizeof (int)) and ALIGNOF_DOUBLE when computing the expected size of FcValue. Signed-off-by: Keith Packard --- src/fcarch.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/fcarch.c b/src/fcarch.c index 09d24b3..5fe7d97 100644 --- a/src/fcarch.c +++ b/src/fcarch.c @@ -56,7 +56,9 @@ FC_ASSERT_STATIC (SIZEOF_VOID_P == sizeof (FcStrSet *)); FC_ASSERT_STATIC (SIZEOF_VOID_P == sizeof (FcCharLeaf **)); FC_ASSERT_STATIC (SIZEOF_VOID_P == sizeof (FcChar16 *)); -FC_ASSERT_STATIC (0x08 + 1*ALIGNOF_DOUBLE == sizeof (FcValue)); +#define FC_MAX(a,b) ((a) > (b) ? (a) : (b)) + +FC_ASSERT_STATIC (0x08 + 1*FC_MAX(4,ALIGNOF_DOUBLE) == sizeof (FcValue)); FC_ASSERT_STATIC (0x00 + 2*SIZEOF_VOID_P == sizeof (FcPatternElt)); FC_ASSERT_STATIC (0x08 + 2*SIZEOF_VOID_P == sizeof (FcPattern)); FC_ASSERT_STATIC (0x08 + 2*SIZEOF_VOID_P == sizeof (FcCharSet));