diff options
| author | deanm@google.com <deanm@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-29 08:58:27 +0000 |
|---|---|---|
| committer | deanm@google.com <deanm@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-29 08:58:27 +0000 |
| commit | 3ec0907d83baa36b48cfc237c6a27cfa4a468c00 (patch) | |
| tree | 0c039f5f32f100c06ea7d0505659d93032a04cbb /chrome/common | |
| parent | 8a2cebb5dc1393c74c1921852369cc45e291914e (diff) | |
| download | chromium_src-3ec0907d83baa36b48cfc237c6a27cfa4a468c00.zip chromium_src-3ec0907d83baa36b48cfc237c6a27cfa4a468c00.tar.gz chromium_src-3ec0907d83baa36b48cfc237c6a27cfa4a468c00.tar.bz2 | |
We don't need to support win2k, so we can always use rand_s. We can also use this for the non-secure case, which simplifies things since we shouldn't need to worry about threading anymore.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1520 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common')
| -rw-r--r-- | chrome/common/rand_util.cc | 27 |
1 files changed, 2 insertions, 25 deletions
diff --git a/chrome/common/rand_util.cc b/chrome/common/rand_util.cc index c4ec6fd..52492a0 100644 --- a/chrome/common/rand_util.cc +++ b/chrome/common/rand_util.cc @@ -5,40 +5,18 @@ #include "chrome/common/rand_util.h" #include <stdlib.h> -#include <time.h> #include "base/logging.h" -#include "base/thread_local_storage.h" -#include "base/time.h" -#include "base/win_util.h" namespace rand_util { -// TODO(evanm): don't rely on static initialization. -// Using TLS since srand() needs to be called once in each thread. -TLSSlot g_tls_index; - int RandInt(int min, int max) { - if (g_tls_index.Get() == 0) { - g_tls_index.Set(reinterpret_cast<void*>(1)); - TimeDelta now = TimeTicks::UnreliableHighResNow() - TimeTicks(); - unsigned int seed = static_cast<unsigned int>(now.InMicroseconds()); - srand(seed); - } - - // From the rand man page, use this instead of just rand() % max, so that the - // higher bits are used. - return min + static_cast<int>(static_cast<double>(max - min + 1) * - (::rand() / (RAND_MAX + 1.0))); + return RandIntSecure(min, max); } int RandIntSecure(int min, int max) { - if (win_util::GetWinVersion() < win_util::WINVERSION_XP) { - // rand_s needs XP and later. - return RandInt(min, max); - } - unsigned int number; + // This code will not work on win2k, which we do not support. errno_t rv = rand_s(&number); DCHECK(rv == 0) << "rand_s failed with error " << rv; @@ -49,4 +27,3 @@ int RandIntSecure(int min, int max) { } } // namespace rand_util - |
