Fixed a copy issue in the trie which could cause a consensus failure

This commit is contained in:
obscuren
2015-02-02 19:58:34 -08:00
parent 6fecb150d6
commit 3c7181d28f
7 changed files with 54 additions and 20 deletions

View File

@ -1,5 +1,7 @@
package trie
import "github.com/ethereum/go-ethereum/ethutil"
type ValueNode struct {
trie *Trie
data []byte
@ -8,6 +10,6 @@ type ValueNode struct {
func (self *ValueNode) Value() Node { return self } // Best not to call :-)
func (self *ValueNode) Val() []byte { return self.data }
func (self *ValueNode) Dirty() bool { return true }
func (self *ValueNode) Copy() Node { return &ValueNode{self.trie, self.data} }
func (self *ValueNode) Copy(t *Trie) Node { return &ValueNode{t, ethutil.CopyBytes(self.data)} }
func (self *ValueNode) RlpData() interface{} { return self.data }
func (self *ValueNode) Hash() interface{} { return self.data }