- Introduce seeding of the random number generator at startup

- Replaced all engine-side occurances of rand() with random()
This commit is contained in:
Thilo Schulz 2009-05-31 19:48:28 +00:00
parent 7aed7e8861
commit b40f1507ea
5 changed files with 28 additions and 17 deletions

View file

@ -2500,6 +2500,22 @@ static void Com_DetectAltivec(void)
}
/*
=================
Com_InitRand
Seed the random number generator, if possible with an OS supplied random seed.
=================
*/
static void Com_InitRand(void)
{
unsigned int seed;
if(Sys_Random(&seed, sizeof(seed)))
srand(seed);
else
srand(time(NULL));
}
/*
=================
Com_Init
@ -2519,8 +2535,11 @@ void Com_Init( char *commandLine ) {
Com_Memset( &eventQueue[ 0 ], 0, MAX_QUEUED_EVENTS * sizeof( sysEvent_t ) );
Com_Memset( &sys_packetReceived[ 0 ], 0, MAX_MSGLEN * sizeof( byte ) );
// do this before anything else decides to push events
Com_InitPushEvent();
// initialize the weak pseudo-random number generator for use later.
Com_InitRand();
// do this before anything else decides to push events
Com_InitPushEvent();
Com_InitSmallZoneMemory();
Cvar_Init ();
@ -3322,8 +3341,7 @@ void Com_RandomBytes( byte *string, int len )
return;
Com_Printf( "Com_RandomBytes: using weak randomization\n" );
srand( time( 0 ) );
for( i = 0; i < len; i++ )
string[i] = (unsigned char)( rand() % 255 );
string[i] = (unsigned char)( random() % 255 );
}