diff options
author | Akira TAGOH <akira@tagoh.org> | 2014-02-06 19:40:01 +0900 |
---|---|---|
committer | Akira TAGOH <akira@tagoh.org> | 2014-02-06 19:40:01 +0900 |
commit | e310d2fac2d874d5aa76c609df70cc7b871c0b6d (patch) | |
tree | 435c8c1e490a824c1a10396e1018a72803a9b5a9 /src | |
parent | 7d75653285a3cd67b5f066fe899821462d7f324f (diff) | |
download | fontconfig-e310d2fac2d874d5aa76c609df70cc7b871c0b6d.tar.gz fontconfig-e310d2fac2d874d5aa76c609df70cc7b871c0b6d.tar.bz2 fontconfig-e310d2fac2d874d5aa76c609df70cc7b871c0b6d.zip |
Fix incompatible API on AIX with random_r and initstate_r
https://bugs.freedesktop.org/show_bug.cgi?id=74603
Diffstat (limited to 'src')
-rw-r--r-- | src/fccompat.c | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/src/fccompat.c b/src/fccompat.c index 1c2ba8be..f4f3f5fd 100644 --- a/src/fccompat.c +++ b/src/fccompat.c @@ -170,14 +170,27 @@ FcRandom(void) static struct random_data fcrandbuf; static char statebuf[256]; static FcBool initialized = FcFalse; +#ifdef _AIX + static char *retval; + long res; +#endif if (initialized != FcTrue) { - initstate_r(time(NULL), statebuf, 256, &fcrandbuf); +#ifdef _AIX + initstate_r (time (NULL), statebuf, 256, &retval, &fcrandbuf); +#else + initstate_r (time (NULL), statebuf, 256, &fcrandbuf); +#endif initialized = FcTrue; } - random_r(&fcrandbuf, &result); +#ifdef _AIX + random_r (&res, &fcrandbuf); + result = (int32_t)res; +#else + random_r (&fcrandbuf, &result); +#endif #elif HAVE_RANDOM static char statebuf[256]; char *state; @@ -185,30 +198,30 @@ FcRandom(void) if (initialized != FcTrue) { - state = initstate(time(NULL), statebuf, 256); + state = initstate (time (NULL), statebuf, 256); initialized = FcTrue; } else - state = setstate(statebuf); + state = setstate (statebuf); - result = random(); + result = random (); - setstate(state); + setstate (state); #elif HAVE_LRAND48 - result = lrand48(); + result = lrand48 (); #elif HAVE_RAND_R - static unsigned int seed = time(NULL); + static unsigned int seed = time (NULL); - result = rand_r(&seed); + result = rand_r (&seed); #elif HAVE_RAND static FcBool initialized = FcFalse; if (initialized != FcTrue) { - srand(time(NULL)); + srand (time (NULL)); initialized = FcTrue; } - result = rand(); + result = rand (); #else # error no random number generator function available. #endif |