mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-14 12:43:40 +02:00
pak mempool removal: don't modify the vector you are taking range over
This commit is contained in:
parent
8de42370d0
commit
85bcda52fc
1 changed files with 7 additions and 4 deletions
|
|
@ -615,6 +615,7 @@ void CTxMemPool::removeForBlock(const std::vector<CTransactionRef>& vtx, unsigne
|
||||||
// Eject any newly-invalid peg-outs based on changing block commitment
|
// Eject any newly-invalid peg-outs based on changing block commitment
|
||||||
const CChainParams& chainparams = Params();
|
const CChainParams& chainparams = Params();
|
||||||
if (pak_transition && chainparams.GetEnforcePak()) {
|
if (pak_transition && chainparams.GetEnforcePak()) {
|
||||||
|
std::vector<CTransactionRef> tx_to_remove;
|
||||||
for (const auto& entry : mapTx) {
|
for (const auto& entry : mapTx) {
|
||||||
for (const auto& out : entry.GetTx().vout) {
|
for (const auto& out : entry.GetTx().vout) {
|
||||||
if (out.scriptPubKey.IsPegoutScript(Params().ParentGenesisBlockHash()) &&
|
if (out.scriptPubKey.IsPegoutScript(Params().ParentGenesisBlockHash()) &&
|
||||||
|
|
@ -622,14 +623,16 @@ void CTxMemPool::removeForBlock(const std::vector<CTransactionRef>& vtx, unsigne
|
||||||
const uint256 tx_id = entry.GetTx().GetHash();
|
const uint256 tx_id = entry.GetTx().GetHash();
|
||||||
txiter it = mapTx.find(tx_id);
|
txiter it = mapTx.find(tx_id);
|
||||||
const CTransaction& tx = it->GetTx();
|
const CTransaction& tx = it->GetTx();
|
||||||
setEntries stage;
|
tx_to_remove.push_back(MakeTransactionRef(tx));
|
||||||
stage.insert(it);
|
|
||||||
removeRecursive(tx, MemPoolRemovalReason::BLOCK);
|
|
||||||
ClearPrioritisation(tx_id);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (auto& tx : tx_to_remove) {
|
||||||
|
const uint256 tx_id = tx->GetHash();
|
||||||
|
removeRecursive(*tx, MemPoolRemovalReason::BLOCK);
|
||||||
|
ClearPrioritisation(tx_id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
lastRollingFeeUpdate = GetTime();
|
lastRollingFeeUpdate = GetTime();
|
||||||
blockSinceLastRollingFeeBump = true;
|
blockSinceLastRollingFeeBump = true;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue