mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 04:22:55 +01:00
Merge pull request #4469 from pravblockc/backports-v0.19-pr2
Backports #15853 #15463 and #16073
This commit is contained in:
commit
2f845d8074
@ -18,6 +18,7 @@
|
|||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
#define LN2SQUARED 0.4804530139182014246671025263266649717305529515945455
|
#define LN2SQUARED 0.4804530139182014246671025263266649717305529515945455
|
||||||
#define LN2 0.6931471805599453094172321214581765680755001343602552
|
#define LN2 0.6931471805599453094172321214581765680755001343602552
|
||||||
@ -389,7 +390,5 @@ void CRollingBloomFilter::reset()
|
|||||||
nTweak = GetRand(std::numeric_limits<unsigned int>::max());
|
nTweak = GetRand(std::numeric_limits<unsigned int>::max());
|
||||||
nEntriesThisGeneration = 0;
|
nEntriesThisGeneration = 0;
|
||||||
nGeneration = 1;
|
nGeneration = 1;
|
||||||
for (std::vector<uint64_t>::iterator it = data.begin(); it != data.end(); it++) {
|
std::fill(data.begin(), data.end(), 0);
|
||||||
*it = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -3777,9 +3777,20 @@ static UniValue getaddressesbylabel(const JSONRPCRequest& request)
|
|||||||
|
|
||||||
// Find all addresses that have the given label
|
// Find all addresses that have the given label
|
||||||
UniValue ret(UniValue::VOBJ);
|
UniValue ret(UniValue::VOBJ);
|
||||||
|
std::set<std::string> addresses;
|
||||||
for (const std::pair<CTxDestination, CAddressBookData>& item : pwallet->mapAddressBook) {
|
for (const std::pair<CTxDestination, CAddressBookData>& item : pwallet->mapAddressBook) {
|
||||||
if (item.second.name == label) {
|
if (item.second.name == label) {
|
||||||
ret.pushKV(EncodeDestination(item.first), AddressBookDataToJSON(item.second, false));
|
std::string address = EncodeDestination(item.first);
|
||||||
|
// CWallet::mapAddressBook is not expected to contain duplicate
|
||||||
|
// address strings, but build a separate set as a precaution just in
|
||||||
|
// case it does.
|
||||||
|
bool unique = addresses.emplace(address).second;
|
||||||
|
assert(unique);
|
||||||
|
// UniValue::pushKV checks if the key exists in O(N)
|
||||||
|
// and since duplicate addresses are unexpected (checked with
|
||||||
|
// std::set in O(log(N))), UniValue::__pushKV is used instead,
|
||||||
|
// which currently is O(1).
|
||||||
|
ret.__pushKV(address, AddressBookDataToJSON(item.second, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,12 +1,11 @@
|
|||||||
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
// Copyright (c) 2009-2015 The Bitcoin Core developers
|
// Copyright (c) 2009-2019 The Bitcoin Core developers
|
||||||
// Copyright (c) 2014-2021 The Dash Core developers
|
// Copyright (c) 2014-2021 The Dash Core developers
|
||||||
// Distributed under the MIT software license, see the accompanying
|
// Distributed under the MIT software license, see the accompanying
|
||||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
#include <wallet/wallet.h>
|
#include <wallet/wallet.h>
|
||||||
|
|
||||||
#include <checkpoints.h>
|
|
||||||
#include <chain.h>
|
#include <chain.h>
|
||||||
#include <wallet/coinselection.h>
|
#include <wallet/coinselection.h>
|
||||||
#include <consensus/consensus.h>
|
#include <consensus/consensus.h>
|
||||||
|
Loading…
Reference in New Issue
Block a user