0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-03-05 14:06:27 -05:00

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.
This commit is contained in:
furszy 2023-07-06 16:10:58 -03:00
parent 1b64f6498c
commit a277f8357a
No known key found for this signature in database
GPG key ID: 5DD23CCC686AA623

View file

@ -4059,10 +4059,10 @@ bool CWallet::ApplyMigrationData(MigrationData& data, bilingual_str& error)
WalletBatch batch{wallet.GetDatabase()}; WalletBatch batch{wallet.GetDatabase()};
for (const auto& [destination, addr_book_data] : wallet.m_address_book) { for (const auto& [destination, addr_book_data] : wallet.m_address_book) {
auto address{EncodeDestination(destination)}; auto address{EncodeDestination(destination)};
auto label{addr_book_data.GetLabel()}; std::optional<std::string> label = addr_book_data.IsChange() ? std::nullopt : std::make_optional(addr_book_data.GetLabel());
// don't bother writing default values (unknown purpose, empty label) // don't bother writing default values (unknown purpose)
if (addr_book_data.purpose) batch.WritePurpose(address, PurposeToString(*addr_book_data.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); if (data.watchonly_wallet) persist_address_book(*data.watchonly_wallet);