From 3558dd5ed4e14f124f04e2bf72fc3b989dff9e77 Mon Sep 17 00:00:00 2001
From: Maran <maran.hidskes@gmail.com>
Date: Tue, 1 Apr 2014 14:42:48 +0200
Subject: Finalize blockchain reverting test

---
 ethchain/block_chain.go | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/ethchain/block_chain.go b/ethchain/block_chain.go
index 8c03eec38..a8d9793d6 100644
--- a/ethchain/block_chain.go
+++ b/ethchain/block_chain.go
@@ -163,14 +163,20 @@ func (bc *BlockChain) FindCanonicalChain(blocks []*Block, commonBlockHash []byte
 }
 func (bc *BlockChain) ResetTillBlockHash(hash []byte) error {
 	lastBlock := bc.CurrentBlock
-	returnTo := bc.GetBlock(hash)
-
-	// TODO: REFACTOR TO FUNCTION, Used multiple times
-	bc.CurrentBlock = returnTo
-	bc.LastBlockHash = returnTo.Hash()
-	info := bc.BlockInfo(returnTo)
-	bc.LastBlockNumber = info.Number
-	// END TODO
+	var returnTo *Block
+	// Reset to Genesis if that's all the origin there is.
+	if bytes.Compare(hash, bc.genesisBlock.Hash()) == 0 {
+		returnTo = bc.genesisBlock
+		bc.CurrentBlock = bc.genesisBlock
+		bc.LastBlockHash = bc.genesisBlock.Hash()
+		bc.LastBlockNumber = 1
+	} else {
+		returnTo = bc.GetBlock(hash)
+		bc.CurrentBlock = returnTo
+		bc.LastBlockHash = returnTo.Hash()
+		info := bc.BlockInfo(returnTo)
+		bc.LastBlockNumber = info.Number
+	}
 
 	bc.Ethereum.StateManager().PrepareDefault(returnTo)
 
-- 
cgit v1.2.3