@@ -194,7 +194,7 @@ void CWallet::SetBestChain(const CBlockLocator& loc)
194194
195195bool CWallet::SetMinVersion (enum WalletFeature nVersion, CWalletDB* pwalletdbIn, bool fExplicit )
196196{
197- AssertLockHeld (cs_wallet); // nWalletVersion
197+ LOCK (cs_wallet); // nWalletVersion
198198 if (nWalletVersion >= nVersion)
199199 return true ;
200200
@@ -221,7 +221,7 @@ bool CWallet::SetMinVersion(enum WalletFeature nVersion, CWalletDB* pwalletdbIn,
221221
222222bool CWallet::SetMaxVersion (int nVersion)
223223{
224- AssertLockHeld (cs_wallet); // nWalletVersion, nWalletMaxVersion
224+ LOCK (cs_wallet); // nWalletVersion, nWalletMaxVersion
225225 // cannot downgrade below current version
226226 if (nWalletVersion > nVersion)
227227 return false ;
@@ -1623,14 +1623,17 @@ DBErrors CWallet::ZapWalletTx()
16231623
16241624bool CWallet::SetAddressBook (const CTxDestination& address, const string& strName, const string& strPurpose)
16251625{
1626- AssertLockHeld (cs_wallet); // mapAddressBook
1627- std::map<CTxDestination, CAddressBookData>::iterator mi = mapAddressBook.find (address);
1628- mapAddressBook[address].name = strName;
1629- if (!strPurpose.empty ()) /* update purpose only if requested */
1630- mapAddressBook[address].purpose = strPurpose;
1626+ bool fUpdated = false ;
1627+ {
1628+ LOCK (cs_wallet); // mapAddressBook
1629+ std::map<CTxDestination, CAddressBookData>::iterator mi = mapAddressBook.find (address);
1630+ fUpdated = mi != mapAddressBook.end ();
1631+ mapAddressBook[address].name = strName;
1632+ if (!strPurpose.empty ()) /* update purpose only if requested */
1633+ mapAddressBook[address].purpose = strPurpose;
1634+ }
16311635 NotifyAddressBookChanged (this , address, strName, ::IsMine (*this , address),
1632- mapAddressBook[address].purpose ,
1633- (mi == mapAddressBook.end ()) ? CT_NEW : CT_UPDATED);
1636+ strPurpose, (fUpdated ? CT_UPDATED : CT_NEW) );
16341637 if (!fFileBacked )
16351638 return false ;
16361639 if (!strPurpose.empty () && !CWalletDB (strWalletFile).WritePurpose (CBitcoinAddress (address).ToString (), strPurpose))
@@ -1640,21 +1643,23 @@ bool CWallet::SetAddressBook(const CTxDestination& address, const string& strNam
16401643
16411644bool CWallet::DelAddressBook (const CTxDestination& address)
16421645{
1643-
1644- AssertLockHeld (cs_wallet); // mapAddressBook
1645-
1646- if (fFileBacked )
16471646 {
1648- // Delete destdata tuples associated with address
1649- std::string strAddress = CBitcoinAddress (address). ToString ();
1650- BOOST_FOREACH ( const PAIRTYPE (string, string) &item, mapAddressBook[address]. destdata )
1647+ LOCK (cs_wallet); // mapAddressBook
1648+
1649+ if ( fFileBacked )
16511650 {
1652- CWalletDB (strWalletFile).EraseDestData (strAddress, item.first );
1651+ // Delete destdata tuples associated with address
1652+ std::string strAddress = CBitcoinAddress (address).ToString ();
1653+ BOOST_FOREACH (const PAIRTYPE (string, string) &item, mapAddressBook[address].destdata )
1654+ {
1655+ CWalletDB (strWalletFile).EraseDestData (strAddress, item.first );
1656+ }
16531657 }
1658+ mapAddressBook.erase (address);
16541659 }
16551660
1656- mapAddressBook.erase (address);
16571661 NotifyAddressBookChanged (this , address, " " , ::IsMine (*this , address), " " , CT_DELETED);
1662+
16581663 if (!fFileBacked )
16591664 return false ;
16601665 CWalletDB (strWalletFile).ErasePurpose (CBitcoinAddress (address).ToString ());
0 commit comments