diff options
| author | mrbandrews <[email protected]> | 2015-04-09 11:08:39 -0400 |
|---|---|---|
| committer | mrbandrews <[email protected]> | 2015-04-14 14:10:19 -0400 |
| commit | 0421c18f3a261f04e83a03f59884e5798af74fd9 (patch) | |
| tree | 7832041ab8119c93b5d19ca00460dc5c7d18511a /src/main.cpp | |
| parent | Merge pull request #6007 (diff) | |
| download | discoin-0421c18f3a261f04e83a03f59884e5798af74fd9.tar.xz discoin-0421c18f3a261f04e83a03f59884e5798af74fd9.zip | |
Fix CheckBlockIndex for reindex.
Some tests in CheckBlockIndex require chainActive.Tip(), but when reindexing, chainActive has not been set on the first call to CheckBlockIndex.
reindex.py starts a node, mines 3 blocks, stops, and reindexes with CheckBlockIndex enabled.
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp index 8fb676630..a9051118a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3227,6 +3227,14 @@ void static CheckBlockIndex() LOCK(cs_main); + // During a reindex, we read the genesis block and call CheckBlockIndex before ActivateBestChain, + // so we have the genesis block in mapBlockIndex but no active chain. (A few of the tests when + // iterating the block tree require that chainActive has been initialized.) + if (chainActive.Height() < 0) { + assert(mapBlockIndex.size() <= 1); + return; + } + // Build forward-pointing map of the entire block tree. std::multimap<CBlockIndex*,CBlockIndex*> forward; for (BlockMap::iterator it = mapBlockIndex.begin(); it != mapBlockIndex.end(); it++) { |