From a3e940fe65a85b3423b6918b21b795e962fdd63d Mon Sep 17 00:00:00 2001 From: Inuyasha Date: Sun, 27 Mar 2016 15:57:50 -0700 Subject: [PATCH] Compensate for insufficient RAND_MAX values. --- src/m_random.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/m_random.c b/src/m_random.c index caf4d5174..97b654c1c 100644 --- a/src/m_random.c +++ b/src/m_random.c @@ -32,7 +32,13 @@ */ fixed_t M_RandomFixed(void) { +#if RAND_MAX < 65535 + // Compensate for insufficient randomness. + fixed_t rndv = (rand()&1)<<15; + return rand()^rndv; +#else return (rand() & 0xFFFF); +#endif } /** Provides a random byte. Distribution is uniform. @@ -246,5 +252,5 @@ void P_SetRandSeedD(const char *rfile, INT32 rline, UINT32 seed) */ UINT32 M_RandomizedSeed(void) { - return ((totalplaytime & 0xFFFF) << 16)|(rand() & 0xFFFF); + return ((totalplaytime & 0xFFFF) << 16)|M_RandomFixed(); }