@ -426,17 +426,25 @@ bool CWallet::EncryptWallet(const SecureString& strWalletPassphrase)
mapMasterKeys [ + + nMasterKeyMaxID ] = kMasterKey ;
mapMasterKeys [ + + nMasterKeyMaxID ] = kMasterKey ;
if ( fFileBacked )
if ( fFileBacked )
{
{
assert ( ! pwalletdbEncryption ) ;
pwalletdbEncryption = new CWalletDB ( strWalletFile ) ;
pwalletdbEncryption = new CWalletDB ( strWalletFile ) ;
if ( ! pwalletdbEncryption - > TxnBegin ( ) )
if ( ! pwalletdbEncryption - > TxnBegin ( ) ) {
delete pwalletdbEncryption ;
pwalletdbEncryption = NULL ;
return false ;
return false ;
}
pwalletdbEncryption - > WriteMasterKey ( nMasterKeyMaxID , kMasterKey ) ;
pwalletdbEncryption - > WriteMasterKey ( nMasterKeyMaxID , kMasterKey ) ;
}
}
if ( ! EncryptKeys ( vMasterKey ) )
if ( ! EncryptKeys ( vMasterKey ) )
{
{
if ( fFileBacked )
if ( fFileBacked ) {
pwalletdbEncryption - > TxnAbort ( ) ;
pwalletdbEncryption - > TxnAbort ( ) ;
exit ( 1 ) ; //We now probably have half of our keys encrypted in memory, and half not...die and let the user reload their unencrypted wallet.
delete pwalletdbEncryption ;
}
// We now probably have half of our keys encrypted in memory, and half not...
// die and let the user reload their unencrypted wallet.
exit ( 1 ) ;
}
}
// Encryption was introduced in version 0.4.0
// Encryption was introduced in version 0.4.0
@ -444,8 +452,12 @@ bool CWallet::EncryptWallet(const SecureString& strWalletPassphrase)
if ( fFileBacked )
if ( fFileBacked )
{
{
if ( ! pwalletdbEncryption - > TxnCommit ( ) )
if ( ! pwalletdbEncryption - > TxnCommit ( ) ) {
exit ( 1 ) ; //We now have keys encrypted in memory, but no on disk...die to avoid confusion and let the user reload their unencrypted wallet.
delete pwalletdbEncryption ;
// We now have keys encrypted in memory, but no on disk...
// die to avoid confusion and let the user reload their unencrypted wallet.
exit ( 1 ) ;
}
delete pwalletdbEncryption ;
delete pwalletdbEncryption ;
pwalletdbEncryption = NULL ;
pwalletdbEncryption = NULL ;