{
int64 nIndex = 0;
CKeyPool keypool;
- ReserveKeyFromKeyPool(nIndex, keypool);
- if (nIndex == -1)
+ CRITICAL_BLOCK(cs_wallet)
{
- if (fAllowReuse && !vchDefaultKey.empty())
+ ReserveKeyFromKeyPool(nIndex, keypool);
+ if (nIndex == -1)
{
- result = vchDefaultKey;
+ if (fAllowReuse && !vchDefaultKey.empty())
+ {
+ result = vchDefaultKey;
+ return true;
+ }
+ if (IsLocked()) return false;
+ result = GenerateNewKey();
return true;
}
- if (IsLocked()) return false;
- result = GenerateNewKey();
- return true;
+ KeepKey(nIndex);
+ result = keypool.vchPubKey;
}
- KeepKey(nIndex);
- result = keypool.vchPubKey;
return true;
}