diff --git a/src/keystore.h b/src/keystore.h --- a/src/keystore.h +++ b/src/keystore.h @@ -30,7 +30,7 @@ //! store. virtual bool HaveKey(const CKeyID &address) const = 0; virtual bool GetKey(const CKeyID &address, CKey &keyOut) const = 0; - virtual void GetKeys(std::set &setAddress) const = 0; + virtual std::set GetKeys() const = 0; virtual bool GetPubKey(const CKeyID &address, CPubKey &vchPubKeyOut) const = 0; @@ -72,16 +72,13 @@ } return result; } - void GetKeys(std::set &setAddress) const override { - setAddress.clear(); - { - LOCK(cs_KeyStore); - KeyMap::const_iterator mi = mapKeys.begin(); - while (mi != mapKeys.end()) { - setAddress.insert((*mi).first); - mi++; - } + std::set GetKeys() const override { + LOCK(cs_KeyStore); + std::set set_address; + for (const auto &mi : mapKeys) { + set_address.insert(mi.first); } + return set_address; } bool GetKey(const CKeyID &address, CKey &keyOut) const override { { diff --git a/src/wallet/crypter.h b/src/wallet/crypter.h --- a/src/wallet/crypter.h +++ b/src/wallet/crypter.h @@ -165,17 +165,16 @@ } bool GetKey(const CKeyID &address, CKey &keyOut) const override; bool GetPubKey(const CKeyID &address, CPubKey &vchPubKeyOut) const override; - void GetKeys(std::set &setAddress) const override { + std::set GetKeys() const override { + LOCK(cs_KeyStore); if (!IsCrypted()) { - CBasicKeyStore::GetKeys(setAddress); - return; + return CBasicKeyStore::GetKeys(); } - setAddress.clear(); - CryptedKeyMap::const_iterator mi = mapCryptedKeys.begin(); - while (mi != mapCryptedKeys.end()) { - setAddress.insert((*mi).first); - mi++; + std::set set_address; + for (const auto &mi : mapCryptedKeys) { + set_address.insert(mi.first); } + return set_address; } /** diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -3811,14 +3811,11 @@ CBlockIndex *pindexMax = chainActive[std::max(0, chainActive.Height() - 144)]; std::map mapKeyFirstBlock; - std::set setKeys; - GetKeys(setKeys); - for (const CKeyID &keyid : setKeys) { + for (const CKeyID &keyid : GetKeys()) { if (mapKeyBirth.count(keyid) == 0) { mapKeyFirstBlock[keyid] = pindexMax; } } - setKeys.clear(); // If there are no such keys, we're done. if (mapKeyFirstBlock.empty()) {