Use wider types to prevent unsigned overflow diagnostics
The rest of the (covered) codebase is already integer overflow clean. This is a cherry-pick of an internal change. TESTED=gtest_shuffle_test goes from fail to pass with -fsanitize=integer
This commit is contained in:
parent
50f3bafb1a
commit
deb99a9d26
|
@ -310,7 +310,8 @@ namespace internal {
|
|||
// than kMaxRange.
|
||||
UInt32 Random::Generate(UInt32 range) {
|
||||
// These constants are the same as are used in glibc's rand(3).
|
||||
state_ = (1103515245U*state_ + 12345U) % kMaxRange;
|
||||
// Use wider types than necessary to prevent unsigned overflow diagnostics.
|
||||
state_ = static_cast<UInt32>(1103515245ULL*state_ + 12345U) % kMaxRange;
|
||||
|
||||
GTEST_CHECK_(range > 0)
|
||||
<< "Cannot generate a number in the range [0, 0).";
|
||||
|
|
Loading…
Reference in New Issue
Block a user