diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index f1d76ddfda827e6a7fe5cc8ca49c81bd5acb4743..50e03b58a6b40ab6356d14b2a9e36af440436134 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -297,15 +297,15 @@ DLLEXPORT void DLLCALL sbbs_srand() xp_randomize(); #if defined(HAS_DEV_RANDOM) && defined(RANDOM_DEV) - int rf; + int rf,rd=0; - if((rf=open(RANDOM_DEV, O_RDONLY))!=-1) { - read(rf, &seed, sizeof(seed)); + if((rf=open(RANDOM_DEV, O_RDONLY|O_NONBLOCK))!=-1) { + rd=read(rf, &seed, sizeof(seed)); close(rf); } -#else - seed = time32(NULL) ^ (DWORD)GetCurrentThreadId(); + if(rd != sizeof(seed)) #endif + seed = time32(NULL) ^ (DWORD)GetCurrentThreadId(); srand(seed); sbbs_random(10); /* Throw away first number */