Fix segfault when creating new wallet

The initialization of the default key used keyUser instead
of vchDefaultKey. keyUser is now complete removed.
This commit is contained in:
Pieter Wuille 2011-06-26 02:37:52 +02:00
parent c774b16976
commit d3800d59d5
2 changed files with 3 additions and 10 deletions

View File

@ -962,21 +962,15 @@ bool CWallet::LoadWallet(bool& fFirstRunRet)
return false; return false;
fFirstRunRet = vchDefaultKey.empty(); fFirstRunRet = vchDefaultKey.empty();
if (mapKeys.count(vchDefaultKey)) if (!mapKeys.count(vchDefaultKey))
{ {
// Set keyUser // Create new default key
keyUser.SetPubKey(vchDefaultKey);
keyUser.SetPrivKey(mapKeys[vchDefaultKey]);
}
else
{
// Create new keyUser and set as default key
RandAddSeedPerfmon(); RandAddSeedPerfmon();
vchDefaultKey = GetKeyFromKeyPool(); vchDefaultKey = GetKeyFromKeyPool();
if (!SetAddressBookName(PubKeyToAddress(vchDefaultKey), "")) if (!SetAddressBookName(PubKeyToAddress(vchDefaultKey), ""))
return false; return false;
CWalletDB(strWalletFile).WriteDefaultKey(keyUser.GetPubKey()); CWalletDB(strWalletFile).WriteDefaultKey(vchDefaultKey);
} }
CreateThread(ThreadFlushWalletDB, &strWalletFile); CreateThread(ThreadFlushWalletDB, &strWalletFile);

View File

@ -47,7 +47,6 @@ public:
mutable CCriticalSection cs_mapAddressBook; mutable CCriticalSection cs_mapAddressBook;
std::vector<unsigned char> vchDefaultKey; std::vector<unsigned char> vchDefaultKey;
CKey keyUser;
bool AddKey(const CKey& key); bool AddKey(const CKey& key);
bool AddToWallet(const CWalletTx& wtxIn); bool AddToWallet(const CWalletTx& wtxIn);