From e5e87bb2bb44f00d5dbc020f4b325b00b7812710 Mon Sep 17 00:00:00 2001 From: Roy Keene Date: Mon, 17 Dec 2018 18:04:15 -0600 Subject: [PATCH] Remove random items from the uniquer sets (#1473) --- rai/lib/blocks.cpp | 8 ++++---- rai/secure/common.cpp | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/rai/lib/blocks.cpp b/rai/lib/blocks.cpp index 601c4bb2..212ebbef 100644 --- a/rai/lib/blocks.cpp +++ b/rai/lib/blocks.cpp @@ -1,4 +1,5 @@ #include +#include #include @@ -1564,11 +1565,10 @@ std::shared_ptr rai::block_uniquer::unique (std::shared_ptr 0; ++i) { - rai::uint256_union random; - rai::random_pool.GenerateBlock (random.bytes.data (), random.bytes.size ()); - auto existing (blocks.find (random)); + auto random_offset (rai::random_pool.GenerateWord32 (0, blocks.size () - 1)); + auto existing (std::next (blocks.begin (), random_offset)); if (existing == blocks.end ()) { existing = blocks.begin (); diff --git a/rai/secure/common.cpp b/rai/secure/common.cpp index 2b72a33d..e8b1c541 100644 --- a/rai/secure/common.cpp +++ b/rai/secure/common.cpp @@ -1,6 +1,7 @@ #include #include +#include #include #include #include @@ -673,11 +674,10 @@ std::shared_ptr rai::vote_uniquer::unique (std::shared_ptr { existing = vote_a; } - for (auto i (0); i < cleanup_count; ++i) + for (auto i (0); i < cleanup_count && votes.size () > 0; ++i) { - rai::uint256_union random; - rai::random_pool.GenerateBlock (random.bytes.data (), random.bytes.size ()); - auto existing (votes.find (random)); + auto random_offset (rai::random_pool.GenerateWord32 (0, votes.size () - 1)); + auto existing (std::next (votes.begin (), random_offset)); if (existing == votes.end ()) { existing = votes.begin ();