Revert seeding the random number generator with rand_s on Windows. It
authorager@chromium.org <ager@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 29 Nov 2010 14:28:06 +0000 (14:28 +0000)
committerager@chromium.org <ager@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 29 Nov 2010 14:28:06 +0000 (14:28 +0000)
makes browser_tests fail.

TBR=jschuh@chromium.org
Review URL: http://codereview.chromium.org/5284006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@5900 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/platform-win32.cc

index 1dcc84b..c50424e 100644 (file)
 #define _WIN32_WINNT 0x501
 #endif
 
-// Required before stdlib.h inclusion 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.
@@ -589,8 +584,11 @@ char* Time::LocalTimezone() {
 
 void OS::Setup() {
   // Seed the random number generator.
-  unsigned int seed;
-  CHECK_EQ(rand_s(&seed), 0);
+  // 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());
   srand(static_cast<unsigned int>(seed));
 }