| Index: src/platform-win32.cc
|
| ===================================================================
|
| --- src/platform-win32.cc (revision 5888)
|
| +++ src/platform-win32.cc (working copy)
|
| @@ -54,6 +54,11 @@
|
| #define _WIN32_WINNT 0x501
|
| #endif
|
|
|
| +// Required before stdlib.h inclsion for cryptographically strong rand_s.
|
| +#ifndef _CRT_RAND_S
|
| +#define _CRT_RAND_S
|
| +#endif // _CRT_RAND_S
|
| +
|
| #include <windows.h>
|
|
|
| #include <time.h> // For LocalOffset() implementation.
|
| @@ -584,11 +589,8 @@
|
|
|
| void OS::Setup() {
|
| // Seed the random number generator.
|
| - // Convert the current time to a 64-bit integer first, before converting it
|
| - // to an unsigned. Going directly can cause an overflow and the seed to be
|
| - // set to all ones. The seed will be identical for different instances that
|
| - // call this setup code within the same millisecond.
|
| - uint64_t seed = static_cast<uint64_t>(TimeCurrentMillis());
|
| + unsigned int seed;
|
| + CHECK_EQ(rand_s(&seed), 0);
|
| srand(static_cast<unsigned int>(seed));
|
| }
|
|
|
|
|