diff options
| author | Russell Yanofsky <[email protected]> | 2020-04-15 17:07:44 -0400 |
|---|---|---|
| committer | Russell Yanofsky <[email protected]> | 2020-04-15 17:07:44 -0400 |
| commit | 9986608ba93de040490ee0d5584ea33e605f1df0 (patch) | |
| tree | 1777a14d9a81dc6dbdb1314c29f139c76738d2f9 /src/interfaces/chain.cpp | |
| parent | Merge #18615: test: Avoid accessing free'd memory in validation_chainstateman... (diff) | |
| download | discoin-9986608ba93de040490ee0d5584ea33e605f1df0.tar.xz discoin-9986608ba93de040490ee0d5584ea33e605f1df0.zip | |
test: Verify findCommonAncestor always initializes outputs
Also add code comment to clarify surprising code noted by practicalswift
https://github.com/bitcoin/bitcoin/pull/18657#issuecomment-614278450
Diffstat (limited to 'src/interfaces/chain.cpp')
| -rw-r--r-- | src/interfaces/chain.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/interfaces/chain.cpp b/src/interfaces/chain.cpp index c8311b298..0e7641ae3 100644 --- a/src/interfaces/chain.cpp +++ b/src/interfaces/chain.cpp @@ -275,6 +275,8 @@ public: const CBlockIndex* block1 = LookupBlockIndex(block_hash1); const CBlockIndex* block2 = LookupBlockIndex(block_hash2); const CBlockIndex* ancestor = block1 && block2 ? LastCommonAncestor(block1, block2) : nullptr; + // Using & instead of && below to avoid short circuiting and leaving + // output uninitialized. return FillBlock(ancestor, ancestor_out, lock) & FillBlock(block1, block1_out, lock) & FillBlock(block2, block2_out, lock); } void findCoins(std::map<COutPoint, Coin>& coins) override { return FindCoins(m_node, coins); } |