diff options
author | Matt Corallo <git@bluematt.me> | 2015-10-21 17:41:40 -0700 |
---|---|---|
committer | Matt Corallo <git@bluematt.me> | 2015-12-01 15:50:39 -0800 |
commit | 74d0f902628472cd0cee66121ef0311eec201c40 (patch) | |
tree | 7aa06dc2b0bc863b3b60b340d3a8919283b13650 | |
parent | 4077ad20d03f0ef61d48ef34b3107661b0ff8ffe (diff) |
Add method to remove a tx from CCoinsViewCache if it is unchanged
-rw-r--r-- | src/coins.cpp | 9 | ||||
-rw-r--r-- | src/coins.h | 6 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/coins.cpp b/src/coins.cpp index 723e114708..060d6b7c5d 100644 --- a/src/coins.cpp +++ b/src/coins.cpp @@ -206,6 +206,15 @@ bool CCoinsViewCache::Flush() { return fOk; } +void CCoinsViewCache::Uncache(const uint256& hash) +{ + CCoinsMap::iterator it = cacheCoins.find(hash); + if (it != cacheCoins.end() && it->second.flags == 0) { + cachedCoinsUsage -= it->second.coins.DynamicMemoryUsage(); + cacheCoins.erase(it); + } +} + unsigned int CCoinsViewCache::GetCacheSize() const { return cacheCoins.size(); } diff --git a/src/coins.h b/src/coins.h index d174422100..5beea711b2 100644 --- a/src/coins.h +++ b/src/coins.h @@ -437,6 +437,12 @@ public: */ bool Flush(); + /** + * Removes the transaction with the given hash from the cache, if it is + * not modified. + */ + void Uncache(const uint256 &txid); + //! Calculate the size of the cache (in number of transactions) unsigned int GetCacheSize() const; |