Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/src/catch2/internal
diff options
context:
space:
mode:
authorMartin Hořeňovský2023-12-10 21:37:12 +0100
committerMartin Hořeňovský2023-12-10 21:37:12 +0100
commitb7d70ddcd609a798048f055cf8f5b6803ac06e52 (patch)
tree75f8d672977915efe8fa5334dc9bf9529d1874b0 /src/catch2/internal
parenta6f22c51699b78116cac54a4ac95bbed710efbd4 (diff)
downloadcatch3-b7d70ddcd609a798048f055cf8f5b6803ac06e52.tar.gz
Ensure we always read 32 bit seed from std::random_device
Diffstat (limited to 'src/catch2/internal')
-rw-r--r--src/catch2/internal/catch_random_seed_generation.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/catch2/internal/catch_random_seed_generation.cpp b/src/catch2/internal/catch_random_seed_generation.cpp
index 40c468cb..fdc3fa19 100644
--- a/src/catch2/internal/catch_random_seed_generation.cpp
+++ b/src/catch2/internal/catch_random_seed_generation.cpp
@@ -9,6 +9,7 @@
#include <catch2/internal/catch_random_seed_generation.hpp>
#include <catch2/internal/catch_enforce.hpp>
+#include <catch2/internal/catch_random_integer_helpers.hpp>
#include <ctime>
#include <random>
@@ -21,10 +22,10 @@ namespace Catch {
return static_cast<std::uint32_t>( std::time( nullptr ) );
case GenerateFrom::Default:
- case GenerateFrom::RandomDevice:
- // In theory, a platform could have random_device that returns just
- // 16 bits. That is still some randomness, so we don't care too much
- return static_cast<std::uint32_t>( std::random_device{}() );
+ case GenerateFrom::RandomDevice: {
+ std::random_device rd;
+ return Detail::fillBitsFrom<std::uint32_t>( rd );
+ }
default:
CATCH_ERROR("Unknown generation method");