aboutsummaryrefslogtreecommitdiffstats
path: root/trie/valuenode.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-02-03 11:58:34 +0800
committerobscuren <geffobscura@gmail.com>2015-02-03 11:58:34 +0800
commit3c7181d28f1f24aaea2da5cce664ffac52f369df (patch)
tree36e229ec95e89287e6d1add6ab587a90f8960041 /trie/valuenode.go
parent6fecb150d6f2bb36d3f1b7b9095cac428df2ce5a (diff)
downloaddexon-3c7181d28f1f24aaea2da5cce664ffac52f369df.tar.gz
dexon-3c7181d28f1f24aaea2da5cce664ffac52f369df.tar.zst
dexon-3c7181d28f1f24aaea2da5cce664ffac52f369df.zip
Fixed a copy issue in the trie which could cause a consensus failure
Diffstat (limited to 'trie/valuenode.go')
-rw-r--r--trie/valuenode.go4
1 files changed, 3 insertions, 1 deletions
diff --git a/trie/valuenode.go b/trie/valuenode.go
index 689befb2a..8912b1c82 100644
--- a/trie/valuenode.go
+++ b/trie/valuenode.go
@@ -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 }