diff --git a/src/test/app/LedgerHistory_test.cpp b/src/test/app/LedgerHistory_test.cpp index b05a4a51bb..428f7be064 100644 --- a/src/test/app/LedgerHistory_test.cpp +++ b/src/test/app/LedgerHistory_test.cpp @@ -110,12 +110,12 @@ public: // Can retrieve by sequence and get correct ledger auto fetched1 = lh.getLedgerBySeq(ledger1->header().seq); - BEAST_EXPECT(fetched1 != nullptr); - BEAST_EXPECT(fetched1->header().hash == ledger1->header().hash); + if (BEAST_EXPECT(fetched1 != nullptr)) + BEAST_EXPECT(fetched1->header().hash == ledger1->header().hash); auto fetched2 = lh.getLedgerBySeq(ledger2->header().seq); - BEAST_EXPECT(fetched2 != nullptr); - BEAST_EXPECT(fetched2->header().hash == ledger2->header().hash); + if (BEAST_EXPECT(fetched2 != nullptr)) + BEAST_EXPECT(fetched2->header().hash == ledger2->header().hash); // Clear ledgers prior to ledger2's sequence lh.clearLedgerCachePrior(ledger2->header().seq); @@ -132,12 +132,12 @@ public: // Verify newer entries remain retrievable and consistent // getLedgerBySeq uses by_index first, then falls back to DB if needed auto fetched2After = lh.getLedgerBySeq(ledger2->header().seq); - BEAST_EXPECT(fetched2After != nullptr); - BEAST_EXPECT(fetched2After->header().hash == ledger2->header().hash); + if (BEAST_EXPECT(fetched2After != nullptr)) + BEAST_EXPECT(fetched2After->header().hash == ledger2->header().hash); auto fetched3After = lh.getLedgerBySeq(ledger3->header().seq); - BEAST_EXPECT(fetched3After != nullptr); - BEAST_EXPECT(fetched3After->header().hash == ledger3->header().hash); + if (BEAST_EXPECT(fetched3After != nullptr)) + BEAST_EXPECT(fetched3After->header().hash == ledger3->header().hash); } void diff --git a/src/xrpld/app/ledger/LedgerHistory.cpp b/src/xrpld/app/ledger/LedgerHistory.cpp index 27b9e7a507..d213576a3c 100644 --- a/src/xrpld/app/ledger/LedgerHistory.cpp +++ b/src/xrpld/app/ledger/LedgerHistory.cpp @@ -85,13 +85,7 @@ LedgerHistory::getLedgerBySeq(LedgerIndex index) { auto lock = ledgerMaps_.lock(); if (auto it = lock->byIndex.find(index); it != lock->byIndex.end()) - { hash = it->second; - } - else - { - hash = {}; - } } if (!hash.isZero()) @@ -437,8 +431,8 @@ LedgerHistory::builtLedger( uint256 const& consensusHash, json::Value consensus) { - LedgerIndex index = ledger->header().seq; - LedgerHash hash = ledger->header().hash; + LedgerIndex const index = ledger->header().seq; + LedgerHash const hash = ledger->header().hash; XRPL_ASSERT(!hash.isZero(), "xrpl::LedgerHistory::builtLedger : nonzero hash"); struct MismatchInputs @@ -489,8 +483,8 @@ LedgerHistory::validatedLedger( std::shared_ptr const& ledger, std::optional const& consensusHash) { - LedgerIndex index = ledger->header().seq; - LedgerHash hash = ledger->header().hash; + LedgerIndex const index = ledger->header().seq; + LedgerHash const hash = ledger->header().hash; XRPL_ASSERT(!hash.isZero(), "xrpl::LedgerHistory::validatedLedger : nonzero hash"); struct MismatchInputs @@ -550,7 +544,7 @@ LedgerHistory::fixIndex(LedgerIndex ledgerIndex, LedgerHash const& ledgerHash) { if (it->second != ledgerHash) { - lock->byIndex[ledgerIndex] = ledgerHash; + it->second = ledgerHash; return false; } } @@ -565,11 +559,10 @@ LedgerHistory::clearLedgerCachePrior(LedgerIndex seq) std::size_t cacheSize = 0; std::size_t indexSize = 0; - std::vector keys; - { + std::vector const keys = [this] { auto lock = ledgerMaps_.lock(); - keys = lock->byHash->getKeys(); - } + return lock->byHash->getKeys(); + }(); for (LedgerHash const& it : keys) { @@ -586,19 +579,8 @@ LedgerHistory::clearLedgerCachePrior(LedgerIndex seq) auto lock = ledgerMaps_.lock(); cacheSize = lock->byHash->size(); - auto it = lock->byIndex.begin(); - while (it != lock->byIndex.end()) - { - if (it->first < seq) - { - it = lock->byIndex.erase(it); - ++indexesCleared; - } - else - { - ++it; - } - } + indexesCleared = std::erase_if( + lock->byIndex, [seq](auto const& kv) { return kv.first < seq; }); indexSize = lock->byIndex.size(); XRPL_ASSERT(