Remove random items from the uniquer sets (#1473)

This commit is contained in:
Roy Keene 2018-12-17 18:04:15 -06:00 committed by Roy Keene
commit e5e87bb2bb
2 changed files with 8 additions and 8 deletions

View file

@ -1,4 +1,5 @@
#include <rai/lib/blocks.hpp>
#include <rai/lib/numbers.hpp>
#include <boost/endian/conversion.hpp>
@ -1564,11 +1565,10 @@ std::shared_ptr<rai::block> rai::block_uniquer::unique (std::shared_ptr<rai::blo
{
existing = block_a;
}
for (auto i (0); i < cleanup_count; ++i)
for (auto i (0); i < cleanup_count && blocks.size () > 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 ();

View file

@ -1,6 +1,7 @@
#include <rai/secure/common.hpp>
#include <rai/lib/interface.h>
#include <rai/lib/numbers.hpp>
#include <rai/node/common.hpp>
#include <rai/secure/blockstore.hpp>
#include <rai/secure/versioning.hpp>
@ -673,11 +674,10 @@ std::shared_ptr<rai::vote> rai::vote_uniquer::unique (std::shared_ptr<rai::vote>
{
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 ();