X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fallocsa.h;h=3337110eb69eac1486290aa63b58d0d009faacfa;hb=6b78d03bdd89f7c8dec8756bf296b75b156b90f3;hp=36379aad5ac081ea3d8b948260d08e8de2a445d0;hpb=8b074eaf661f64ea43421012298355257b341f53;p=gnulib.git diff --git a/lib/allocsa.h b/lib/allocsa.h index 36379aad5..3337110eb 100644 --- a/lib/allocsa.h +++ b/lib/allocsa.h @@ -1,5 +1,5 @@ /* Safe automatic memory allocation. - Copyright (C) 2003-2005 Free Software Foundation, Inc. + Copyright (C) 2003-2007 Free Software Foundation, Inc. Written by Bruno Haible , 2003. This program is free software; you can redistribute it and/or modify @@ -95,7 +95,7 @@ extern void freesa (void *p); #elif defined _AIX /* Work around an AIX 3.2.5 xlc bug with enums constants defined as offsetof values. */ -# define sa_alignof(type) 4 +# define sa_alignof(type) (sizeof (type) <= 4 ? 4 : 8) #else # define sa_alignof(type) offsetof (struct { char __slot1; type __slot2; }, __slot2) #endif @@ -106,17 +106,17 @@ enum among all elementary types. */ sa_alignment_long = sa_alignof (long), sa_alignment_double = sa_alignof (double), -#ifdef HAVE_LONG_LONG +#if HAVE_LONG_LONG_INT sa_alignment_longlong = sa_alignof (long long), #endif -#ifdef HAVE_LONG_DOUBLE +#if HAVE_LONG_DOUBLE sa_alignment_longdouble = sa_alignof (long double), #endif sa_alignment_max = ((sa_alignment_long - 1) | (sa_alignment_double - 1) -#ifdef HAVE_LONG_LONG +#if HAVE_LONG_LONG_INT | (sa_alignment_longlong - 1) #endif -#ifdef HAVE_LONG_DOUBLE +#if HAVE_LONG_DOUBLE | (sa_alignment_longdouble - 1) #endif ) + 1,