From: RĂ©mi Denis-Courmont Date: Fri, 16 Apr 2010 20:29:44 +0000 (+0300) Subject: Avoid problems with srand() and speed up a bit (avoid dlsym) X-Git-Tag: 1.2.0-pre1~7027 X-Git-Url: https://git.sesse.net/?p=vlc;a=commitdiff_plain;h=1ae21d47f282c15a4f9fed23d3b709ff6a9c2de5 Avoid problems with srand() and speed up a bit (avoid dlsym) --- diff --git a/bin/override.c b/bin/override.c index a8b0754887..02402d50ec 100644 --- a/bin/override.c +++ b/bin/override.c @@ -148,24 +148,28 @@ int unsetenv (const char *name) * preserve reproducibility of the number sequence (which usually does not * matter). **/ -static pthread_mutex_t prng_lock = PTHREAD_MUTEX_INITIALIZER; +static struct +{ + pthread_mutex_t lock; + unsigned int seed; +} prng = { PTHREAD_MUTEX_INITIALIZER, 0, }; void srand (unsigned int seed) { - pthread_mutex_lock (&prng_lock); + pthread_mutex_lock (&prng.lock); LOG("Warning", "%d", seed); - CALL(srand, seed); - pthread_mutex_unlock (&prng_lock); + prng.seed = seed; + pthread_mutex_unlock (&prng.lock); } int rand (void) { int ret; - pthread_mutex_lock (&prng_lock); + pthread_mutex_lock (&prng.lock); LOG("Warning", ""); - ret = CALL(rand); - pthread_mutex_unlock (&prng_lock); + ret = rand_r (&prng.seed); + pthread_mutex_unlock (&prng.lock); return ret; }