Explictly use 64-bit random engine
Avoids downcasting issues for the seed on platforms where the random
engine is actually 32-bit.
Change-Id: Ia9e4cffb688e7c82f3f088b71f99002b76ad1df3
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/65640
Auto-Submit: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/fuzzers/random_generator.cc b/fuzzers/random_generator.cc
index a485b0e..c50a879 100644
--- a/fuzzers/random_generator.cc
+++ b/fuzzers/random_generator.cc
@@ -32,7 +32,7 @@
/// @param upper - Upper bound of integer generated
/// @returns i, where lower <= i < upper
template <typename I>
-I RandomUInt(std::mt19937* engine, I lower, I upper) {
+I RandomUInt(std::mt19937_64* engine, I lower, I upper) {
assert(lower < upper && "|lower| must be stictly less than |upper|");
return std::uniform_int_distribution<I>(lower, upper - 1)(*engine);
@@ -80,18 +80,18 @@
}
uint8_t RandomGenerator::GetByte() {
- return std::independent_bits_engine<std::mt19937, 8, uint8_t>(engine_)();
+ return std::independent_bits_engine<std::mt19937_64, 8, uint8_t>(engine_)();
}
uint32_t RandomGenerator::Get4Bytes() {
- return std::independent_bits_engine<std::mt19937, 32, uint32_t>(engine_)();
+ return std::independent_bits_engine<std::mt19937_64, 32, uint32_t>(engine_)();
}
void RandomGenerator::GetNBytes(uint8_t* dest, size_t n) {
assert(dest && "|dest| must not be nullptr");
std::generate(
dest, dest + n,
- std::independent_bits_engine<std::mt19937, 8, uint8_t>(engine_));
+ std::independent_bits_engine<std::mt19937_64, 8, uint8_t>(engine_));
}
bool RandomGenerator::GetBool() {
diff --git a/fuzzers/random_generator.h b/fuzzers/random_generator.h
index 4fe6acc..002a13c 100644
--- a/fuzzers/random_generator.h
+++ b/fuzzers/random_generator.h
@@ -98,7 +98,7 @@
}
private:
- std::mt19937 engine_;
+ std::mt19937_64 engine_;
}; // class RandomGenerator