diff options
Diffstat (limited to 'code/qcommon')
| -rw-r--r-- | code/qcommon/common.c | 26 | 
1 files changed, 22 insertions, 4 deletions
diff --git a/code/qcommon/common.c b/code/qcommon/common.c index e8a95a5..0f28072 100644 --- a/code/qcommon/common.c +++ b/code/qcommon/common.c @@ -2502,6 +2502,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 );  }  | 
