aboutsummaryrefslogtreecommitdiff
path: root/db.cpp
diff options
context:
space:
mode:
authorSatoshi Nakamoto <satoshin@gmx.com>2010-08-16 20:55:54 +0000
committerGavin Andresen <gavinandresen@gmail.com>2010-08-16 20:55:54 +0000
commit43deefa4355981e53f4fdfe9aa1c4003941e2a8e (patch)
treea82c4b6b1c3e145a80f5bdcb0daf2551d40107b1 /db.cpp
parent21ca2d833b85673c482803b1c382bbe948b2c44a (diff)
do an extra CheckBlock in ConnectBlock
Diffstat (limited to 'db.cpp')
-rw-r--r--db.cpp13
1 files changed, 1 insertions, 12 deletions
diff --git a/db.cpp b/db.cpp
index d83392e52f..8be1e20e46 100644
--- a/db.cpp
+++ b/db.cpp
@@ -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;