On Wed, Aug 21, 2013 at 02:33:08PM -0400, Behdad Esfahbod wrote: > On 13-08-21 01:41 PM, Albert Chin wrote: > > On Wed, Aug 21, 2013 at 01:45:12AM -0400, Behdad Esfahbod wrote: > >> On 13-08-21 12:44 AM, Albert Chin wrote: > >>> On AIX 32-bit and 64-bit, alignof(double) == 4. This isn't a > >>> problem for 32-bit builds of fontconfig but for 64-bit builds, > >>> the following assert in src/fcarch.c fails: > >>> FC_ASSERT_STATIC (0x08 + 1*FC_MAX(4,ALIGNOF_DOUBLE) == sizeof (FcValue)); > >> > >> So, what *is* sizeof(FcValue)? If alignof(double) is 4, double > >> itself is 8, and enum is 4, then sizeof(FcValue) should be 12 > >> which is exactly what the assertion is trying to ensure. > > > > This is the offending line above compiled with -E: > > typedef int _static_assert_on_line_59_failed[(((0x08 + 1*((4) > (4) ? (4) : (4)) == sizeof (FcValue))))?1:-1]; > > > > sizeof (FcValue) == 16. > > > > typedef struct _FcValue { // sizeof(type) > > FcType type; 4 > > union { > > const FcChar8 *s; 8 > > int i; 4 > > FcBool b; 4 > > double d; 8 > > const FcMatrix *m; 8 > > const FcCharSet *c; 8 > > void *f; 8 > > const FcLangSet *l; 8 > > } u; > > } FcValue; 16 > > I see. I wasn't expecting any 64bit system to have a 32bit double > alignment. Pushed out a fix. Please test. Your fix builds on Solaris/SPARC, Solaris/x86, HP-UX/PA, HP-UX/IA, and AIX. Thanks! -- albert chin (china@xxxxxxxxxxxxxxxxxx) _______________________________________________ Fontconfig mailing list Fontconfig@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/fontconfig