From b0a1aef43dccc1cafe22b4b0e0991663829fed5b Mon Sep 17 00:00:00 2001 From: Joe Loser Date: Wed, 20 Jun 2018 07:49:22 -0400 Subject: [PATCH] Replace deprecated usages of std::random_shuffle std::random_shuffle is deprecated in C++14 and removed completely in C++17. The two-iterator version of std::random_shuffle usually depends on std::rand and also on a global state. The preferred replacement is to use std::shuffle with a pseudo-random number generator. --- src/ripple/peerfinder/impl/Livecache.h | 5 ++++- src/ripple/peerfinder/impl/Logic.h | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ripple/peerfinder/impl/Livecache.h b/src/ripple/peerfinder/impl/Livecache.h index cfcc040ed..2224543c6 100644 --- a/src/ripple/peerfinder/impl/Livecache.h +++ b/src/ripple/peerfinder/impl/Livecache.h @@ -21,6 +21,7 @@ #define RIPPLE_PEERFINDER_LIVECACHE_H_INCLUDED #include +#include #include #include #include @@ -29,6 +30,8 @@ #include #include +#include + namespace ripple { namespace PeerFinder { @@ -482,7 +485,7 @@ Livecache ::hops_t::shuffle() v.reserve (list.size()); std::copy (list.begin(), list.end(), std::back_inserter (v)); - std::random_shuffle (v.begin(), v.end()); + std::shuffle (v.begin(), v.end(), default_prng()); list.clear(); for (auto& e : v) list.push_back (e); diff --git a/src/ripple/peerfinder/impl/Logic.h b/src/ripple/peerfinder/impl/Logic.h index 260966702..359084e04 100644 --- a/src/ripple/peerfinder/impl/Logic.h +++ b/src/ripple/peerfinder/impl/Logic.h @@ -21,6 +21,7 @@ #define RIPPLE_PEERFINDER_LOGIC_H_INCLUDED #include +#include #include #include #include @@ -35,6 +36,8 @@ #include #include #include + +#include #include #include #include @@ -590,7 +593,7 @@ public: if (value.second->state() == Slot::active) slots.emplace_back (value.second); }); - std::random_shuffle (slots.begin(), slots.end()); + std::shuffle (slots.begin(), slots.end(), default_prng()); // build target vector targets.reserve (slots.size());