From 7c4ad6e2986907e621496cd992010b264b37c63c Mon Sep 17 00:00:00 2001 From: Eirik0 Date: Tue, 16 Apr 2019 19:35:04 -0600 Subject: [PATCH] Additional locking and race condition prevention --- src/wallet/wallet.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 9c3107436..07fafe42f 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -606,6 +606,9 @@ void CWallet::RunSaplingMigration(int blockHeight) { saplingMigrationOperation = operation; q->addOperation(operation); } else if (blockHeight % 500 == 499) { + if (saplingMigrationOperation != nullptr) { + saplingMigrationOperation->cancel(); + } for (const CTransaction& transaction : pendingSaplingMigrationTxs) { // The following is taken from z_sendmany/z_mergetoaddress // Send the transaction @@ -623,6 +626,7 @@ void CWallet::RunSaplingMigration(int blockHeight) { } void CWallet::AddPendingSaplingMigrationTx(const CTransaction& tx) { + LOCK(cs_wallet); pendingSaplingMigrationTxs.push_back(tx); }