diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index c2ab434c45f36..c51dd69d9fa3e 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -4008,12 +4008,16 @@ DBErrors CWallet::ZapSelectTx(std::vector& vHashIn, std::vector& vWtx) { if (!fFileBacked) return DB_LOAD_OK; - DBErrors nZapWalletTxRet = CWalletDB(strWalletFile,"cr+").ZapWalletTx(this, vWtx); + vchDefaultKey = CPubKey(); + DBErrors nZapWalletTxRet = CWalletDB(strWalletFile,"cr+").ZapWalletTx(vWtx); if (nZapWalletTxRet == DB_NEED_REWRITE) { if (CDB::Rewrite(strWalletFile, "\x04pool")) diff --git a/src/wallet/walletdb.cpp b/src/wallet/walletdb.cpp index 5c69b7246434f..4876ad0132a6a 100644 --- a/src/wallet/walletdb.cpp +++ b/src/wallet/walletdb.cpp @@ -690,20 +690,17 @@ DBErrors CWalletDB::LoadWallet(CWallet* pwallet) return result; } -DBErrors CWalletDB::FindWalletTx(CWallet* pwallet, std::vector& vTxHash, std::vector& vWtx) +DBErrors CWalletDB::FindWalletTx(vector& vTxHash, vector& vWtx) { - pwallet->vchDefaultKey = CPubKey(); bool fNoncriticalErrors = false; DBErrors result = DB_LOAD_OK; try { - LOCK(pwallet->cs_wallet); int nMinVersion = 0; if (Read((std::string)"minversion", nMinVersion)) { if (nMinVersion > CLIENT_VERSION) return DB_TOO_NEW; - pwallet->LoadMinVersion(nMinVersion); } // Get cursor @@ -756,12 +753,12 @@ DBErrors CWalletDB::FindWalletTx(CWallet* pwallet, std::vector& vTxHash return result; } -DBErrors CWalletDB::ZapSelectTx(CWallet* pwallet, std::vector& vTxHashIn, std::vector& vTxHashOut) +DBErrors CWalletDB::ZapSelectTx(vector& vTxHashIn, vector& vTxHashOut) { // build list of wallet TXs and hashes - std::vector vTxHash; - std::vector vWtx; - DBErrors err = FindWalletTx(pwallet, vTxHash, vWtx); + vector vTxHash; + vector vWtx; + DBErrors err = FindWalletTx(vTxHash, vWtx); if (err != DB_LOAD_OK) { return err; } @@ -780,7 +777,6 @@ DBErrors CWalletDB::ZapSelectTx(CWallet* pwallet, std::vector& vTxHashI break; } else if ((*it) == hash) { - pwallet->mapWallet.erase(hash); if(!EraseTx(hash)) { LogPrint("db", "Transaction was found for deletion but returned database error: %s\n", hash.GetHex()); delerror = true; @@ -795,11 +791,11 @@ DBErrors CWalletDB::ZapSelectTx(CWallet* pwallet, std::vector& vTxHashI return DB_LOAD_OK; } -DBErrors CWalletDB::ZapWalletTx(CWallet* pwallet, std::vector& vWtx) +DBErrors CWalletDB::ZapWalletTx(vector& vWtx) { // build list of wallet TXs - std::vector vTxHash; - DBErrors err = FindWalletTx(pwallet, vTxHash, vWtx); + vector vTxHash; + DBErrors err = FindWalletTx(vTxHash, vWtx); if (err != DB_LOAD_OK) return err; diff --git a/src/wallet/walletdb.h b/src/wallet/walletdb.h index 9ea7a088a738e..26ddf333ba58d 100644 --- a/src/wallet/walletdb.h +++ b/src/wallet/walletdb.h @@ -128,9 +128,9 @@ class CWalletDB : public CDB void ListAccountCreditDebit(const std::string& strAccount, std::list& acentries); DBErrors LoadWallet(CWallet* pwallet); - DBErrors FindWalletTx(CWallet* pwallet, std::vector& vTxHash, std::vector& vWtx); - DBErrors ZapWalletTx(CWallet* pwallet, std::vector& vWtx); - DBErrors ZapSelectTx(CWallet* pwallet, std::vector& vHashIn, std::vector& vHashOut); + DBErrors FindWalletTx(std::vector& vTxHash, std::vector& vWtx); + DBErrors ZapWalletTx(std::vector& vWtx); + DBErrors ZapSelectTx(std::vector& vHashIn, std::vector& vHashOut); static bool Recover(CDBEnv& dbenv, const std::string& filename, bool fOnlyKeys); static bool Recover(CDBEnv& dbenv, const std::string& filename);