Make randomNumber generate 2^53 values instead of 2^32 (or 2^31 for rand() platforms)
[WebKit-https.git] / JavaScriptCore / wtf / RandomNumberSeed.h
index 62170b5..5a6f426 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
+ * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -35,8 +35,15 @@ namespace WTF {
 inline void initializeRandomNumberGenerator()
 {
 #if PLATFORM(DARWIN)
-    srandomdev();
-#elif !COMPILER(MSVC) || !defined(_CRT_RAND_S)
+    // On Darwin we use arc4random which initialises itself.
+#elif COMPILER(MSVC) && defined(_CRT_RAND_S)
+    // On Windows we use rand_s which intialises itself
+#elif PLATFORM(UNIX)
+    // srandomdev is not guaranteed to exist on linux so we use this poor seed, this should be improved
+    timeval time;
+    gettimeofday(&time, 0);
+    srandom(static_cast<unsigned>(time.tv_usec * getpid()));
+#else
     srand(static_cast<unsigned>(time(0)));
 #endif
 }