From a277f8357ad8b0eb26f33fc36f919d868c06847b Mon Sep 17 00:00:00 2001 From: furszy Date: Thu, 6 Jul 2023 16:10:58 -0300 Subject: [PATCH] wallet: migration bugfix, persist empty labels addressbook records with no associated label could be treated as change. And we don't want that for external addresses. --- src/wallet/wallet.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 02bbc86fa96..8fa93b97d65 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -4059,10 +4059,10 @@ bool CWallet::ApplyMigrationData(MigrationData& data, bilingual_str& error) WalletBatch batch{wallet.GetDatabase()}; for (const auto& [destination, addr_book_data] : wallet.m_address_book) { auto address{EncodeDestination(destination)}; - auto label{addr_book_data.GetLabel()}; - // don't bother writing default values (unknown purpose, empty label) + std::optional label = addr_book_data.IsChange() ? std::nullopt : std::make_optional(addr_book_data.GetLabel()); + // don't bother writing default values (unknown purpose) if (addr_book_data.purpose) batch.WritePurpose(address, PurposeToString(*addr_book_data.purpose)); - if (!label.empty()) batch.WriteName(address, label); + if (label) batch.WriteName(address, *label); } }; if (data.watchonly_wallet) persist_address_book(*data.watchonly_wallet);