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.
|
||||
AC_FUNC_VPRINTF
|
||||
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
|
||||
|
|
|
@ -213,6 +213,17 @@ struct _FcCacheSkip {
|
|||
static FcCacheSkip *fcCacheChains[FC_CACHE_MAX_LEVEL];
|
||||
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
|
||||
* so that each level is 1/4 as likely as the one before
|
||||
|
@ -223,7 +234,7 @@ static int
|
|||
random_level (void)
|
||||
{
|
||||
/* tricky bit -- each bit is '1' 75% of the time */
|
||||
long int bits = random () | random ();
|
||||
long int bits = FcRandom () | FcRandom ();
|
||||
int level = 0;
|
||||
|
||||
while (++level < FC_CACHE_MAX_LEVEL)
|
||||
|
|
Loading…
Reference in New Issue