Chromium Code Reviews| Index: src/utils/random-number-generator.cc |
| diff --git a/src/utils/random-number-generator.cc b/src/utils/random-number-generator.cc |
| index 5e13e8fea8536aaca706c4b6f4c4cde845445f68..1bf201b26fd36ddbba8386ee878d607ebc35c093 100644 |
| --- a/src/utils/random-number-generator.cc |
| +++ b/src/utils/random-number-generator.cc |
| @@ -28,6 +28,7 @@ |
| #include "utils/random-number-generator.h" |
| #include <cstdio> |
| +#include <cstdlib> |
| #include "flags.h" |
| #include "platform/mutex.h" |
| @@ -67,6 +68,16 @@ RandomNumberGenerator::RandomNumberGenerator() { |
| } |
| } |
| +#if V8_OS_CYGIN || V8_OS_WIN |
|
Michael Achenbach
2013/09/24 12:55:41
CYGWIN
Benedikt Meurer
2013/09/24 13:24:51
Done.
|
| + // Use rand_s() to gather entropy on Windows. See: |
| + // https://code.google.com/p/v8/issues/detail?id=2905 |
| + unsigned first_half, second_half; |
| + errno_t result = rand_s(&first_half); |
| + ASSERT_EQ(0, result); |
| + result = rand_s(&second_half); |
| + ASSERT_EQ(0, result); |
| + SetSeed((static_cast<int64_t>(first_half) << 32) + second_half); |
| +#else |
| // Gather entropy from /dev/urandom if available. |
| FILE* fp = fopen("/dev/urandom", "rb"); |
| if (fp != NULL) { |
| @@ -91,6 +102,7 @@ RandomNumberGenerator::RandomNumberGenerator() { |
| seed ^= TimeTicks::HighResNow().ToInternalValue() << 16; |
| seed ^= TimeTicks::Now().ToInternalValue() << 8; |
| SetSeed(seed); |
| +#endif // V8_OS_CYGWIN || V8_OS_WIN |
| } |