aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wallet/wallet.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp
index e03f5532fc..28c696d0dd 100644
--- a/src/wallet/wallet.cpp
+++ b/src/wallet/wallet.cpp
@@ -2385,6 +2385,7 @@ bool CWallet::SetAddressBook(const CTxDestination& address, const std::string& s
bool CWallet::DelAddressBook(const CTxDestination& address)
{
+ const std::string& dest = EncodeDestination(address);
WalletBatch batch(GetDatabase());
{
LOCK(cs_wallet);
@@ -2396,14 +2397,30 @@ bool CWallet::DelAddressBook(const CTxDestination& address)
return false;
}
// Delete data rows associated with this address
- batch.EraseAddressData(address);
+ if (!batch.EraseAddressData(address)) {
+ WalletLogPrintf("Error: cannot erase address book entry data\n");
+ return false;
+ }
+
+ // Delete purpose entry
+ if (!batch.ErasePurpose(dest)) {
+ WalletLogPrintf("Error: cannot erase address book entry purpose\n");
+ return false;
+ }
+
+ // Delete name entry
+ if (!batch.EraseName(dest)) {
+ WalletLogPrintf("Error: cannot erase address book entry name\n");
+ return false;
+ }
+
+ // finally, remove it from the map
m_address_book.erase(address);
}
+ // All good, signal changes
NotifyAddressBookChanged(address, "", /*is_mine=*/false, AddressPurpose::SEND, CT_DELETED);
-
- batch.ErasePurpose(EncodeDestination(address));
- return batch.EraseName(EncodeDestination(address));
+ return true;
}
size_t CWallet::KeypoolCountExternalKeys() const