Skip to content

Commit bba4f8d

Browse files
committed
refactor: SetAddrBookWithDB, signal only if write succeeded
1 parent 97b0753 commit bba4f8d

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/wallet/wallet.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2368,13 +2368,22 @@ bool CWallet::SetAddressBookWithDB(WalletBatch& batch, const CTxDestination& add
23682368
purpose = m_address_book[address].purpose;
23692369
}
23702370
}
2371+
2372+
const std::string& encoded_dest = EncodeDestination(address);
2373+
if (new_purpose && !batch.WritePurpose(encoded_dest, PurposeToString(*new_purpose))) {
2374+
WalletLogPrintf("Error: fail to write address book 'purpose' entry\n");
2375+
return false;
2376+
}
2377+
if (!batch.WriteName(encoded_dest, strName)) {
2378+
WalletLogPrintf("Error: fail to write address book 'name' entry\n");
2379+
return false;
2380+
}
2381+
23712382
// In very old wallets, address purpose may not be recorded so we derive it from IsMine
23722383
NotifyAddressBookChanged(address, strName, is_mine,
23732384
purpose.value_or(is_mine ? AddressPurpose::RECEIVE : AddressPurpose::SEND),
23742385
(fUpdated ? CT_UPDATED : CT_NEW));
2375-
if (new_purpose && !batch.WritePurpose(EncodeDestination(address), PurposeToString(*new_purpose)))
2376-
return false;
2377-
return batch.WriteName(EncodeDestination(address), strName);
2386+
return true;
23782387
}
23792388

23802389
bool CWallet::SetAddressBook(const CTxDestination& address, const std::string& strName, const std::optional<AddressPurpose>& purpose)

0 commit comments

Comments
 (0)