Detect and use available random number generator (bug 8308)
Prefer random over lrand48 over rand
This commit is contained in:
parent
706a1b367a
commit
cc104e6a91
|
@ -166,7 +166,7 @@ AC_TYPE_PID_T
|
||||||
# Checks for library functions.
|
# Checks for library functions.
|
||||||
AC_FUNC_VPRINTF
|
AC_FUNC_VPRINTF
|
||||||
AC_FUNC_MMAP
|
AC_FUNC_MMAP
|
||||||
AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand_r])
|
AC_CHECK_FUNCS([geteuid getuid link memmove memset mkstemp strchr strrchr strtol getopt getopt_long sysconf ftruncate chsize rand random lrand48])
|
||||||
|
|
||||||
#
|
#
|
||||||
# Checks for iconv
|
# Checks for iconv
|
||||||
|
|
|
@ -213,6 +213,17 @@ struct _FcCacheSkip {
|
||||||
static FcCacheSkip *fcCacheChains[FC_CACHE_MAX_LEVEL];
|
static FcCacheSkip *fcCacheChains[FC_CACHE_MAX_LEVEL];
|
||||||
static int fcCacheMaxLevel;
|
static int fcCacheMaxLevel;
|
||||||
|
|
||||||
|
#if HAVE_RANDOM
|
||||||
|
# define FcRandom() random()
|
||||||
|
#else
|
||||||
|
# if HAVE_LRAND48
|
||||||
|
# define FcRandom() lrand48()
|
||||||
|
# else
|
||||||
|
# if HAVE_RAND
|
||||||
|
# define FcRandom() rand()
|
||||||
|
# endif
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
* Generate a random level number, distributed
|
* Generate a random level number, distributed
|
||||||
* so that each level is 1/4 as likely as the one before
|
* so that each level is 1/4 as likely as the one before
|
||||||
|
@ -223,7 +234,7 @@ static int
|
||||||
random_level (void)
|
random_level (void)
|
||||||
{
|
{
|
||||||
/* tricky bit -- each bit is '1' 75% of the time */
|
/* tricky bit -- each bit is '1' 75% of the time */
|
||||||
long int bits = random () | random ();
|
long int bits = FcRandom () | FcRandom ();
|
||||||
int level = 0;
|
int level = 0;
|
||||||
|
|
||||||
while (++level < FC_CACHE_MAX_LEVEL)
|
while (++level < FC_CACHE_MAX_LEVEL)
|
||||||
|
|
Loading…
Reference in New Issue