Browse Source

Fix segfault when creating new wallet

The initialization of the default key used keyUser instead
of vchDefaultKey. keyUser is now complete removed.
miguelfreitas
Pieter Wuille 14 years ago
parent
commit
d3800d59d5
  1. 12
      src/wallet.cpp
  2. 1
      src/wallet.h

12
src/wallet.cpp

@ -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);

1
src/wallet.h

@ -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);

Loading…
Cancel
Save