mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-04-29 23:09:44 -04:00
coins: check unspent‑overwrite before cachedCoinsUsage
change in AddCoin
This commit is contained in:
parent
a1fe87eb66
commit
02dbefb9a9
2 changed files with 3 additions and 4 deletions
|
@ -76,9 +76,6 @@ void CCoinsViewCache::AddCoin(const COutPoint &outpoint, Coin&& coin, bool possi
|
||||||
bool inserted;
|
bool inserted;
|
||||||
std::tie(it, inserted) = cacheCoins.emplace(std::piecewise_construct, std::forward_as_tuple(outpoint), std::tuple<>());
|
std::tie(it, inserted) = cacheCoins.emplace(std::piecewise_construct, std::forward_as_tuple(outpoint), std::tuple<>());
|
||||||
bool fresh = false;
|
bool fresh = false;
|
||||||
if (!inserted) {
|
|
||||||
cachedCoinsUsage -= it->second.coin.DynamicMemoryUsage();
|
|
||||||
}
|
|
||||||
if (!possible_overwrite) {
|
if (!possible_overwrite) {
|
||||||
if (!it->second.coin.IsSpent()) {
|
if (!it->second.coin.IsSpent()) {
|
||||||
throw std::logic_error("Attempted to overwrite an unspent coin (when possible_overwrite is false)");
|
throw std::logic_error("Attempted to overwrite an unspent coin (when possible_overwrite is false)");
|
||||||
|
@ -98,6 +95,9 @@ void CCoinsViewCache::AddCoin(const COutPoint &outpoint, Coin&& coin, bool possi
|
||||||
// DIRTY, then it can be marked FRESH.
|
// DIRTY, then it can be marked FRESH.
|
||||||
fresh = !it->second.IsDirty();
|
fresh = !it->second.IsDirty();
|
||||||
}
|
}
|
||||||
|
if (!inserted) {
|
||||||
|
cachedCoinsUsage -= it->second.coin.DynamicMemoryUsage();
|
||||||
|
}
|
||||||
it->second.coin = std::move(coin);
|
it->second.coin = std::move(coin);
|
||||||
CCoinsCacheEntry::SetDirty(*it, m_sentinel);
|
CCoinsCacheEntry::SetDirty(*it, m_sentinel);
|
||||||
if (fresh) CCoinsCacheEntry::SetFresh(*it, m_sentinel);
|
if (fresh) CCoinsCacheEntry::SetFresh(*it, m_sentinel);
|
||||||
|
|
|
@ -44,7 +44,6 @@ unsigned-integer-overflow:arith_uint256.h
|
||||||
unsigned-integer-overflow:CBloomFilter::Hash
|
unsigned-integer-overflow:CBloomFilter::Hash
|
||||||
unsigned-integer-overflow:CRollingBloomFilter::insert
|
unsigned-integer-overflow:CRollingBloomFilter::insert
|
||||||
unsigned-integer-overflow:RollingBloomHash
|
unsigned-integer-overflow:RollingBloomHash
|
||||||
unsigned-integer-overflow:CCoinsViewCache::AddCoin
|
|
||||||
unsigned-integer-overflow:CCoinsViewCache::BatchWrite
|
unsigned-integer-overflow:CCoinsViewCache::BatchWrite
|
||||||
unsigned-integer-overflow:CompressAmount
|
unsigned-integer-overflow:CompressAmount
|
||||||
unsigned-integer-overflow:DecompressAmount
|
unsigned-integer-overflow:DecompressAmount
|
||||||
|
|
Loading…
Add table
Reference in a new issue