Use autoconf FLEXIBLE_ARRAY_MEMBER when available

This commit is contained in:
Behdad Esfahbod 2009-11-18 11:27:33 -05:00
parent d33f674cb7
commit c65b26acf2
3 changed files with 14 additions and 5 deletions

View File

@ -11,6 +11,8 @@ AC_PROG_LIBTOOL dnl ([1.4]) Don't remove!
AC_PROG_CC
AC_PROG_CXX
AC_C_FLEXIBLE_ARRAY_MEMBER
AC_CHECK_FUNCS(mprotect sysconf getpagesize)
AC_CHECK_HEADERS(unistd.h sys/mman.h)

View File

@ -35,8 +35,8 @@
typedef SHORT Value;
typedef Value ValueRecord[VAR];
ASSERT_SIZE_VAR (Value, 0, ValueRecord);
typedef Value ValueRecord[VAR0];
ASSERT_SIZE_VAR (ValueRecord, 0, Value);
struct ValueFormat : USHORT
{

View File

@ -148,11 +148,18 @@ typedef int hb_mutex_t;
#define ASSERT_SIZE(_type, _size) ASSERT_STATIC (sizeof (_type) == (_size))
#define VAR 1 /* Size signifying variable-sized array */
/* Size signifying variable-sized array */
#ifdef FLEXIBLE_ARRAY_MEMBER
#define VAR FLEXIBLE_ARRAY_MEMBER
#else
#define VAR 1
#endif
#define VAR0 (VAR+0)
#define ASSERT_SIZE_VAR(_type, _size, _var_type) \
ASSERT_STATIC (sizeof (_type) == (_size) + VAR * sizeof (_var_type))
ASSERT_STATIC (sizeof (_type) == (_size) + VAR0 * sizeof (_var_type))
#define ASSERT_SIZE_VAR2(_type, _size, _var_type1, _var_type2) \
ASSERT_STATIC (sizeof (_type) == (_size) + VAR * sizeof (_var_type1) + VAR * sizeof (_var_type2))
ASSERT_STATIC (sizeof (_type) == (_size) + VAR0 * sizeof (_var_type1) + VAR0 * sizeof (_var_type2))
#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__)
#define _HB_BOOLEAN_EXPR(expr) \