Fix the build issue with gperf 3.1
To support the one of changes in gperf 3.1: * The 'len' parameter of the hash function and of the lookup function is now of type 'size_t' instead of 'unsigned int'. This makes it safe to call these functions with strings of length > 4 GB, on 64-bit machines.
This commit is contained in:
parent
1ab5258f7c
commit
9878b306f6
20
configure.ac
20
configure.ac
|
@ -193,6 +193,26 @@ fi
|
|||
AC_CHECK_MEMBERS([struct dirent.d_type],,,
|
||||
[#include <dirent.h>])
|
||||
|
||||
# Check the argument type of the gperf hash/lookup function
|
||||
AC_MSG_CHECKING([The type of len parameter of gperf hash/lookup function])
|
||||
fc_gperf_test="$(echo 'foo' | gperf -L ANSI-C)"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <string.h>
|
||||
|
||||
const char *in_word_set(register const char *, register size_t);
|
||||
$fc_gperf_test
|
||||
]])], [FC_GPERF_SIZE_T=size_t],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <string.h>
|
||||
|
||||
const char *in_word_set(register const char *, register unsigned int);
|
||||
$fc_gperf_test
|
||||
]])], [FC_GPERF_SIZE_T="unsigned int"],
|
||||
[AC_MSG_ERROR([Unable to determine the type of the len parameter of the gperf hash/lookup function])]
|
||||
)])
|
||||
AC_DEFINE_UNQUOTED(FC_GPERF_SIZE_T, $FC_GPERF_SIZE_T, [The type of len parameter of the gperf hash/lookup function])
|
||||
AC_MSG_RESULT($FC_GPERF_SIZE_T)
|
||||
|
||||
#
|
||||
# Checks for iconv
|
||||
#
|
||||
|
|
|
@ -25,10 +25,10 @@
|
|||
#include "fcint.h"
|
||||
|
||||
static unsigned int
|
||||
FcObjectTypeHash (register const char *str, register unsigned int len);
|
||||
FcObjectTypeHash (register const char *str, register FC_GPERF_SIZE_T len);
|
||||
|
||||
static const struct FcObjectTypeInfo *
|
||||
FcObjectTypeLookup (register const char *str, register unsigned int len);
|
||||
FcObjectTypeLookup (register const char *str, register FC_GPERF_SIZE_T len);
|
||||
|
||||
#include "fcobjshash.h"
|
||||
|
||||
|
|
Loading…
Reference in New Issue