wallet2::load correctly initialize m_blockchain for wallet loaded without bin file

Fix for simplewallet loading a wallet with a keys file but no bin file.

  - this situation previously required a user to restart simplewallet
    before it would refresh its blockchain from the server.
This commit is contained in:
warptangent 2014-12-10 02:38:35 -08:00
parent efad735145
commit 9b7e0a06b5
No known key found for this signature in database
GPG Key ID: 0E490BEBFBE4E92D
1 changed files with 9 additions and 7 deletions

View File

@ -686,14 +686,16 @@ void wallet2::load(const std::string& wallet_, const std::string& password)
{
LOG_PRINT_L0("file not found: " << m_wallet_file << ", starting with empty blockchain");
m_account_public_address = m_account.get_keys().m_account_address;
return;
}
bool r = tools::unserialize_obj_from_file(*this, m_wallet_file);
THROW_WALLET_EXCEPTION_IF(!r, error::file_read_error, m_wallet_file);
THROW_WALLET_EXCEPTION_IF(
m_account_public_address.m_spend_public_key != m_account.get_keys().m_account_address.m_spend_public_key ||
m_account_public_address.m_view_public_key != m_account.get_keys().m_account_address.m_view_public_key,
error::wallet_files_doesnt_correspond, m_keys_file, m_wallet_file);
else
{
bool r = tools::unserialize_obj_from_file(*this, m_wallet_file);
THROW_WALLET_EXCEPTION_IF(!r, error::file_read_error, m_wallet_file);
THROW_WALLET_EXCEPTION_IF(
m_account_public_address.m_spend_public_key != m_account.get_keys().m_account_address.m_spend_public_key ||
m_account_public_address.m_view_public_key != m_account.get_keys().m_account_address.m_view_public_key,
error::wallet_files_doesnt_correspond, m_keys_file, m_wallet_file);
}
cryptonote::block genesis;
generate_genesis(genesis);