diff options
author | Satoshi Nakamoto <satoshin@gmx.com> | 2010-08-16 20:55:54 +0000 |
---|---|---|
committer | Gavin Andresen <gavinandresen@gmail.com> | 2010-08-16 20:55:54 +0000 |
commit | 43deefa4355981e53f4fdfe9aa1c4003941e2a8e (patch) | |
tree | a82c4b6b1c3e145a80f5bdcb0daf2551d40107b1 /db.cpp | |
parent | 21ca2d833b85673c482803b1c382bbe948b2c44a (diff) |
do an extra CheckBlock in ConnectBlock
Diffstat (limited to 'db.cpp')
-rw-r--r-- | db.cpp | 13 |
1 files changed, 1 insertions, 12 deletions
@@ -460,12 +460,9 @@ bool CTxDB::LoadBlockIndex() ReadBestInvalidWork(bnBestInvalidWork); // Verify blocks in the best chain - vector<CBlockIndex*> vChain; - vector<CBlockIndex*> vBad; CBlockIndex* pindexFork = NULL; for (CBlockIndex* pindex = pindexBest; pindex && pindex->pprev; pindex = pindex->pprev) { - vChain.push_back(pindex); CBlock block; if (!block.ReadFromDisk(pindex)) return error("LoadBlockIndex() : block.ReadFromDisk failed"); @@ -473,25 +470,17 @@ bool CTxDB::LoadBlockIndex() { printf("LoadBlockIndex() : *** found bad block at %d, hash=%s\n", pindex->nHeight, pindex->GetBlockHash().ToString().c_str()); pindexFork = pindex->pprev; - vBad = vChain; } } if (pindexFork) { + // Reorg back to the fork printf("LoadBlockIndex() : *** moving best chain pointer back to block %d\n", pindexFork->nHeight); CBlock block; if (!block.ReadFromDisk(pindexFork)) return error("LoadBlockIndex() : block.ReadFromDisk failed"); CTxDB txdb; block.SetBestChain(txdb, pindexFork); - - // Delete the bad chain - foreach(CBlockIndex* pindex, vBad) - { - txdb.EraseBlockIndex(pindex->GetBlockHash()); - mapBlockIndex.erase(pindex->GetBlockHash()); - delete pindex; - } } return true; |