diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2022-04-14 16:51:54 -0700 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2022-04-14 16:51:54 -0700 |
commit | 95ef32f1a667af567b9d3173fe456154e522dfde (patch) | |
tree | 37d01094bb7567d35e8589bbae1fb46f5e32f2b4 | |
parent | 2c01f07385db88fa92f3a3789457c68db0d7d49e (diff) |
til: seed srand in til_init()
A future commit will remove srand() calls from modules, relying
instead on this srand() in til_init().
As mentioned in the comment, if modules actually want
reproducible deterministic pseudo-random values they should use
rand_r() (or their own PRNG) where they can control the seed.
-rw-r--r-- | src/til.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -8,6 +8,7 @@ #include <string.h> #include <stdint.h> #include <sys/time.h> +#include <time.h> #include <unistd.h> #include "til.h" @@ -68,6 +69,14 @@ static const til_module_t *modules[] = { /* initialize rototiller (create rendering threads) */ int til_init(void) { + /* Various modules seed srand(), just do it here so they don't need to. + * At some point in the future this might become undesirable, if reproducible + * pseudo-randomized output is actually desirable. But that should probably be + * achieved using rand_r() anyways, since modules can't prevent others from playing + * with srand(). + */ + srand(time(NULL) + getpid()); + if (!(til_threads = til_threads_create())) return -errno; |