diff options
| author | Luke Dashjr <[email protected]> | 2016-02-27 06:11:04 +0000 |
|---|---|---|
| committer | Luke Dashjr <[email protected]> | 2016-02-27 06:11:37 +0000 |
| commit | e5daa2e2aef61f0b9441d19f0b67015f426c6056 (patch) | |
| tree | 90a095dcd23c8a74cb605f55e224a902cba75a06 /src/coins.cpp | |
| parent | Bugfix: gitian: Add curl to packages (now needed for depends) (diff) | |
| parent | Merge #7583: [doc] Fix typos (diff) | |
| download | discoin-e5daa2e2aef61f0b9441d19f0b67015f426c6056.tar.xz discoin-e5daa2e2aef61f0b9441d19f0b67015f426c6056.zip | |
Merge branch 'master' into depends_curl
Diffstat (limited to 'src/coins.cpp')
| -rw-r--r-- | src/coins.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/coins.cpp b/src/coins.cpp index 122bf4e48..877fb8b26 100644 --- a/src/coins.cpp +++ b/src/coins.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2012-2014 The Bitcoin Core developers +// Copyright (c) 2012-2015 The Bitcoin Core developers // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. @@ -117,11 +117,17 @@ CCoinsModifier CCoinsViewCache::ModifyCoins(const uint256 &txid) { return CCoinsModifier(*this, ret.first, cachedCoinUsage); } -CCoinsModifier CCoinsViewCache::ModifyNewCoins(const uint256 &txid) { +// ModifyNewCoins has to know whether the new outputs its creating are for a +// coinbase or not. If they are for a coinbase, it can not mark them as fresh. +// This is to ensure that the historical duplicate coinbases before BIP30 was +// in effect will still be properly overwritten when spent. +CCoinsModifier CCoinsViewCache::ModifyNewCoins(const uint256 &txid, bool coinbase) { assert(!hasModifier); std::pair<CCoinsMap::iterator, bool> ret = cacheCoins.insert(std::make_pair(txid, CCoinsCacheEntry())); ret.first->second.coins.Clear(); - ret.first->second.flags = CCoinsCacheEntry::FRESH; + if (!coinbase) { + ret.first->second.flags = CCoinsCacheEntry::FRESH; + } ret.first->second.flags |= CCoinsCacheEntry::DIRTY; return CCoinsModifier(*this, ret.first, 0); } |