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
-~----------~----~----~----~------~----~------~--~---

Reply via email to