Added companion removeprunedfunds call.
This commit is contained in:
@@ -785,6 +785,45 @@ DBErrors CWalletDB::FindWalletTx(CWallet* pwallet, vector<uint256>& vTxHash, vec
|
||||
return result;
|
||||
}
|
||||
|
||||
DBErrors CWalletDB::ZapSelectTx(CWallet* pwallet, vector<uint256>& vTxHashIn, vector<uint256>& vTxHashOut)
|
||||
{
|
||||
// build list of wallet TXs and hashes
|
||||
vector<uint256> vTxHash;
|
||||
vector<CWalletTx> vWtx;
|
||||
DBErrors err = FindWalletTx(pwallet, vTxHash, vWtx);
|
||||
if (err != DB_LOAD_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
std::sort(vTxHash.begin(), vTxHash.end());
|
||||
std::sort(vTxHashIn.begin(), vTxHashIn.end());
|
||||
|
||||
// erase each matching wallet TX
|
||||
bool delerror = false;
|
||||
vector<uint256>::iterator it = vTxHashIn.begin();
|
||||
BOOST_FOREACH (uint256 hash, vTxHash) {
|
||||
while (it < vTxHashIn.end() && (*it) < hash) {
|
||||
it++;
|
||||
}
|
||||
if (it == vTxHashIn.end()) {
|
||||
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;
|
||||
}
|
||||
vTxHashOut.push_back(hash);
|
||||
}
|
||||
}
|
||||
|
||||
if (delerror) {
|
||||
return DB_CORRUPT;
|
||||
}
|
||||
return DB_LOAD_OK;
|
||||
}
|
||||
|
||||
DBErrors CWalletDB::ZapWalletTx(CWallet* pwallet, vector<CWalletTx>& vWtx)
|
||||
{
|
||||
// build list of wallet TXs
|
||||
|
||||
Reference in New Issue
Block a user