mirror of https://github.com/bitcoin/bitcoin.git
coins: only adjust `cachedCoinsUsage` on `EmplaceCoinInternalDANGER` inserts
Guarantees counter stays balanced both on insert and on in‑place replacement. Note that this is currently only called from AssumeUTXO code where it should only insert. Co-authored-by: Andrew Toth <andrewstoth@gmail.com>
This commit is contained in:
parent
f1791d64b4
commit
77bdd02c64
|
@ -111,9 +111,12 @@ void CCoinsViewCache::AddCoin(const COutPoint &outpoint, Coin&& coin, bool possi
|
||||||
}
|
}
|
||||||
|
|
||||||
void CCoinsViewCache::EmplaceCoinInternalDANGER(COutPoint&& outpoint, Coin&& coin) {
|
void CCoinsViewCache::EmplaceCoinInternalDANGER(COutPoint&& outpoint, Coin&& coin) {
|
||||||
cachedCoinsUsage += coin.DynamicMemoryUsage();
|
const auto mem_usage{coin.DynamicMemoryUsage()};
|
||||||
auto [it, inserted] = cacheCoins.try_emplace(std::move(outpoint), std::move(coin));
|
auto [it, inserted] = cacheCoins.try_emplace(std::move(outpoint), std::move(coin));
|
||||||
if (inserted) CCoinsCacheEntry::SetDirty(*it, m_sentinel);
|
if (inserted) {
|
||||||
|
CCoinsCacheEntry::SetDirty(*it, m_sentinel);
|
||||||
|
cachedCoinsUsage += mem_usage;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AddCoins(CCoinsViewCache& cache, const CTransaction &tx, int nHeight, bool check_for_overwrite) {
|
void AddCoins(CCoinsViewCache& cache, const CTransaction &tx, int nHeight, bool check_for_overwrite) {
|
||||||
|
|
Loading…
Reference in New Issue