aboutsummaryrefslogtreecommitdiff
path: root/src/rpcblockchain.cpp
diff options
context:
space:
mode:
authorPieter Wuille <[email protected]>2013-05-12 15:50:22 +0200
committerPieter Wuille <[email protected]>2013-05-12 19:52:16 +0200
commit0fe8010a10bafd67f9131b2da034fb9cd7fc5024 (patch)
treed0b8dd4281e2c088559356642c48c903403f9909 /src/rpcblockchain.cpp
parentUpdate version numbers for 0.8.2rc1 release (diff)
downloaddiscoin-0fe8010a10bafd67f9131b2da034fb9cd7fc5024.tar.xz
discoin-0fe8010a10bafd67f9131b2da034fb9cd7fc5024.zip
Make FindBlockByHeight constant-time.
Remove the pnext pointer in CBlockIndex, and replace it with a vBlockIndexByHeight vector (no effect on memory usage). pnext can now be replaced by vBlockIndexByHeight[nHeight+1], but FindBlockByHeight becomes constant-time. This also means the entire mapBlockIndex structure and the block index entries in it become purely blocktree-related data, and independent from the currently active chain, potentially allowing them to be protected by separate mutexes in the future.
Diffstat (limited to 'src/rpcblockchain.cpp')
-rw-r--r--src/rpcblockchain.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/rpcblockchain.cpp b/src/rpcblockchain.cpp
index 11af1abf5..b1b0c1ac1 100644
--- a/src/rpcblockchain.cpp
+++ b/src/rpcblockchain.cpp
@@ -65,8 +65,9 @@ Object blockToJSON(const CBlock& block, const CBlockIndex* blockindex)
if (blockindex->pprev)
result.push_back(Pair("previousblockhash", blockindex->pprev->GetBlockHash().GetHex()));
- if (blockindex->pnext)
- result.push_back(Pair("nextblockhash", blockindex->pnext->GetBlockHash().GetHex()));
+ CBlockIndex *pnext = blockindex->GetNextInMainChain();
+ if (pnext)
+ result.push_back(Pair("nextblockhash", pnext->GetBlockHash().GetHex()));
return result;
}