aboutsummaryrefslogtreecommitdiffstats
path: root/trie/iterator.go
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2015-12-01 19:28:26 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2015-12-01 19:28:26 +0800
commit96d86740a1d27d548cba4fffd22d3b85a6975c4d (patch)
tree2f1c94790089a9dff935e434d6985a8bd8ad1c44 /trie/iterator.go
parent23031b1554a05817ac23f2ef0d4780e16f065663 (diff)
parent52904ae32f0a591e7dccad7827ff1c2a73c27026 (diff)
downloaddexon-96d86740a1d27d548cba4fffd22d3b85a6975c4d.tar
dexon-96d86740a1d27d548cba4fffd22d3b85a6975c4d.tar.gz
dexon-96d86740a1d27d548cba4fffd22d3b85a6975c4d.tar.bz2
dexon-96d86740a1d27d548cba4fffd22d3b85a6975c4d.tar.lz
dexon-96d86740a1d27d548cba4fffd22d3b85a6975c4d.tar.xz
dexon-96d86740a1d27d548cba4fffd22d3b85a6975c4d.tar.zst
dexon-96d86740a1d27d548cba4fffd22d3b85a6975c4d.zip
Merge pull request #2005 from zsfelfoldi/light-trie
Trie error handling
Diffstat (limited to 'trie/iterator.go')
-rw-r--r--trie/iterator.go19
1 files changed, 16 insertions, 3 deletions
diff --git a/trie/iterator.go b/trie/iterator.go
index 38555fe08..5f205e081 100644
--- a/trie/iterator.go
+++ b/trie/iterator.go
@@ -16,7 +16,12 @@
package trie
-import "bytes"
+import (
+ "bytes"
+
+ "github.com/ethereum/go-ethereum/logger"
+ "github.com/ethereum/go-ethereum/logger/glog"
+)
type Iterator struct {
trie *Trie
@@ -100,7 +105,11 @@ func (self *Iterator) next(node interface{}, key []byte, isIterStart bool) []byt
}
case hashNode:
- return self.next(self.trie.resolveHash(node), key, isIterStart)
+ rn, err := self.trie.resolveHash(node, nil, nil)
+ if err != nil && glog.V(logger.Error) {
+ glog.Errorf("Unhandled trie error: %v", err)
+ }
+ return self.next(rn, key, isIterStart)
}
return nil
}
@@ -127,7 +136,11 @@ func (self *Iterator) key(node interface{}) []byte {
}
}
case hashNode:
- return self.key(self.trie.resolveHash(node))
+ rn, err := self.trie.resolveHash(node, nil, nil)
+ if err != nil && glog.V(logger.Error) {
+ glog.Errorf("Unhandled trie error: %v", err)
+ }
+ return self.key(rn)
}
return nil