diff --git a/src/cpp/ripple/LedgerHistory.cpp b/src/cpp/ripple/LedgerHistory.cpp index 34a0d05d8..dc30e87e3 100644 --- a/src/cpp/ripple/LedgerHistory.cpp +++ b/src/cpp/ripple/LedgerHistory.cpp @@ -24,6 +24,7 @@ LedgerHistory::LedgerHistory() : mLedgersByHash("LedgerCache", CACHED_LEDGER_NUM void LedgerHistory::addLedger(Ledger::pointer ledger) { + assert(ledger->isImmutable()); mLedgersByHash.canonicalize(ledger->getHash(), ledger, true); } @@ -78,13 +79,17 @@ Ledger::pointer LedgerHistory::getLedgerByHash(const uint256& hash) { Ledger::pointer ret = mLedgersByHash.fetch(hash); if (ret) + { + assert(ret->getHash() == hash); return ret; + } ret = Ledger::loadByHash(hash); if (!ret) return ret; assert(ret->getHash() == hash); mLedgersByHash.canonicalize(ret->getHash(), ret); + assert(ret->getHash() == hash); return ret; } diff --git a/src/cpp/ripple/LedgerMaster.h b/src/cpp/ripple/LedgerMaster.h index 514b05551..dac64c862 100644 --- a/src/cpp/ripple/LedgerMaster.h +++ b/src/cpp/ripple/LedgerMaster.h @@ -105,10 +105,11 @@ public: Ledger::pointer getLedgerByHash(const uint256& hash) { if (hash.isZero()) - return mCurrentLedger; + return boost::make_shared(boost::ref(*mCurrentLedger), false); if (mCurrentLedger && (mCurrentLedger->getHash() == hash)) - return mCurrentLedger; + return boost::make_shared(boost::ref(*mCurrentLedger), false); + if (mFinalizedLedger && (mFinalizedLedger->getHash() == hash)) return mFinalizedLedger;