Merge #12298: Refactor HaveKeys to early return on false result

5bdbbdc Refactor HaveKeys to early return on false result (João Barbosa)

Pull request description:

  This consists in a trivial change where the return type of `HaveKeys()` is now `bool` meaning that it returns whether all keys are in the keystore, and early returns when one isn't.

Tree-SHA512: 03e35ea8486404b84884b49f6905c9f4fc161a3eeef080b06482d77985d5242a2bdd57a34b8d16abe19ee8c6cfa3e6fbcb935c73197d53f4cd468a2c7c0b889b
This commit is contained in:
Wladimir J. van der Laan 2018-02-08 13:30:34 +01:00 committed by Pasta
parent 2ec68225ad
commit 52c96537a4
No known key found for this signature in database
GPG Key ID: 52527BEDABE87984

View File

@ -13,16 +13,13 @@
typedef std::vector<unsigned char> valtype;
unsigned int HaveKeys(const std::vector<valtype>& pubkeys, const CKeyStore& keystore)
static bool HaveKeys(const std::vector<valtype>& pubkeys, const CKeyStore& keystore)
{
unsigned int nResult = 0;
for (const valtype& pubkey : pubkeys)
{
for (const valtype& pubkey : pubkeys) {
CKeyID keyID = CPubKey(pubkey).GetID();
if (keystore.HaveKey(keyID))
++nResult;
if (!keystore.HaveKey(keyID)) return false;
}
return nResult;
return true;
}
isminetype IsMine(const CKeyStore &keystore, const CTxDestination& dest)
@ -76,7 +73,7 @@ isminetype IsMine(const CKeyStore &keystore, const CScript& scriptPubKey)
// them) enable spend-out-from-under-you attacks, especially
// in shared-wallet situations.
std::vector<valtype> keys(vSolutions.begin()+1, vSolutions.begin()+vSolutions.size()-1);
if (HaveKeys(keys, keystore) == keys.size())
if (HaveKeys(keys, keystore))
return ISMINE_SPENDABLE;
break;
}