diff --git a/src/CanonicalTXSet.cpp b/src/CanonicalTXSet.cpp index 93ed79ccd4..c46c089374 100644 --- a/src/CanonicalTXSet.cpp +++ b/src/CanonicalTXSet.cpp @@ -44,10 +44,12 @@ void CanonicalTXSet::push_back(SerializedTransaction::pointer txn) mMap.insert(std::make_pair(CanonicalTXKey(effectiveAccount, txn->getSequence(), txn->getTransactionID()), txn)); } -void CanonicalTXSet::eraseInc(iterator& it) +CanonicalTXSet::iterator CanonicalTXSet::erase(const iterator& it) { - iterator tmp = it++; - mMap.erase(tmp); + iterator tmp = it; + ++tmp; + mMap.erase(it); + return tmp; } diff --git a/src/CanonicalTXSet.h b/src/CanonicalTXSet.h index f78c580cd9..6978859af7 100644 --- a/src/CanonicalTXSet.h +++ b/src/CanonicalTXSet.h @@ -39,8 +39,7 @@ public: CanonicalTXSet(const uint256& lclHash) : mSetHash(lclHash) { ; } void push_back(SerializedTransaction::pointer txn); - void erase(const iterator& it) { mMap.erase(it); } - void eraseInc(iterator& it); + iterator erase(const iterator& it); iterator begin() { return mMap.begin(); } iterator end() { return mMap.end(); } diff --git a/src/LedgerConsensus.cpp b/src/LedgerConsensus.cpp index a1aa85ef3e..ca556745b1 100644 --- a/src/LedgerConsensus.cpp +++ b/src/LedgerConsensus.cpp @@ -694,7 +694,7 @@ void LedgerConsensus::applyTransactions(SHAMap::pointer set, Ledger::pointer led if (result <= 0) { if (result == 0) ++successes; - failedTransactions.eraseInc(it); + it = failedTransactions.erase(it); } else { @@ -704,7 +704,7 @@ void LedgerConsensus::applyTransactions(SHAMap::pointer set, Ledger::pointer led catch (...) { Log(lsWARNING) << " Throws"; - failedTransactions.eraseInc(it); + it = failedTransactions.erase(it); } } } while (successes > 0);