LGTM. On Wed, Sep 10, 2008 at 8:45 AM, <[EMAIL PROTECTED]> wrote: > Reviewers: Kasper Lund, > > Description: > Fix issue http://code.google.com/p/v8/issues/detail?id=58: > - Prevent a clipping of values when converting a double to an unsigned > int > for use as the random generator's seed value. > > Please review this at http://codereview.chromium.org/1887 > > Affected files: > M src/platform-linux.cc > M src/platform-macos.cc > M src/platform-win32.cc > > > Index: src/platform-win32.cc > =================================================================== > --- src/platform-win32.cc (revision 244) > +++ src/platform-win32.cc (working copy) > @@ -493,7 +493,12 @@ > > void OS::Setup() { > // Seed the random number generator. > - srand(static_cast<unsigned int>(TimeCurrentMillis())); > + // 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)); > } > > > Index: src/platform-linux.cc > =================================================================== > --- src/platform-linux.cc (revision 244) > +++ src/platform-linux.cc (working copy) > @@ -67,7 +67,12 @@ > > void OS::Setup() { > // Seed the random number generator. > - srandom(static_cast<unsigned int>(TimeCurrentMillis())); > + // 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()); > + srandom(static_cast<unsigned int>(seed)); > } > > > Index: src/platform-macos.cc > =================================================================== > --- src/platform-macos.cc (revision 244) > +++ src/platform-macos.cc (working copy) > @@ -73,7 +73,12 @@ > > void OS::Setup() { > // Seed the random number generator. > - srandom(static_cast<unsigned int>(TimeCurrentMillis())); > + // Convert the current time to a 64-bit integer first, before converting > it > + // to an unsigned. Going directly will 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()); > + srandom(static_cast<unsigned int>(seed)); > } > > > > >
--~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
