aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2015-10-12 05:14:35 +0800
committerPéter Szilágyi <peterke@gmail.com>2015-10-12 05:14:35 +0800
commitaf9afb686bbfcbb57fad80511983d155b26a4460 (patch)
tree5b7960c066ba347455efa1b48f621af53c00ac81
parent315a422ba754eae10db21990a809f608f7af62d4 (diff)
downloadgo-tangerine-af9afb686bbfcbb57fad80511983d155b26a4460.tar.gz
go-tangerine-af9afb686bbfcbb57fad80511983d155b26a4460.tar.zst
go-tangerine-af9afb686bbfcbb57fad80511983d155b26a4460.zip
core/vm: copy stack element to prevent overwrites
-rw-r--r--core/vm/vm.go7
1 files changed, 4 insertions, 3 deletions
diff --git a/core/vm/vm.go b/core/vm/vm.go
index 57dd4dac3..4b03e55f0 100644
--- a/core/vm/vm.go
+++ b/core/vm/vm.go
@@ -370,9 +370,11 @@ func (self *Vm) log(pc uint64, op OpCode, gas, cost *big.Int, memory *Memory, st
if Debug {
mem := make([]byte, len(memory.Data()))
copy(mem, memory.Data())
- stck := make([]*big.Int, len(stack.Data()))
- copy(stck, stack.Data())
+ stck := make([]*big.Int, len(stack.Data()))
+ for i, item := range stack.Data() {
+ stck[i] = new(big.Int).Set(item)
+ }
storage := make(map[common.Hash][]byte)
/*
object := contract.self.(*state.StateObject)
@@ -380,7 +382,6 @@ func (self *Vm) log(pc uint64, op OpCode, gas, cost *big.Int, memory *Memory, st
storage[common.BytesToHash(k)] = v
})
*/
-
self.env.AddStructLog(StructLog{pc, op, new(big.Int).Set(gas), cost, mem, stck, storage, err})
}
}