aboutsummaryrefslogtreecommitdiffstats
path: root/ethchain/vm.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-05-29 05:16:54 +0800
committerobscuren <geffobscura@gmail.com>2014-05-29 05:16:54 +0800
commit4d987624867fc02a079d8355c28bad620db85f06 (patch)
tree967b2e6b8241642af207667c5db7fab00701cd3b /ethchain/vm.go
parent73a42d34a5a58a634fd778858287a55a6af7537e (diff)
downloadgo-tangerine-4d987624867fc02a079d8355c28bad620db85f06.tar
go-tangerine-4d987624867fc02a079d8355c28bad620db85f06.tar.gz
go-tangerine-4d987624867fc02a079d8355c28bad620db85f06.tar.bz2
go-tangerine-4d987624867fc02a079d8355c28bad620db85f06.tar.lz
go-tangerine-4d987624867fc02a079d8355c28bad620db85f06.tar.xz
go-tangerine-4d987624867fc02a079d8355c28bad620db85f06.tar.zst
go-tangerine-4d987624867fc02a079d8355c28bad620db85f06.zip
Fixed state object gas return
Diffstat (limited to 'ethchain/vm.go')
-rw-r--r--ethchain/vm.go12
1 files changed, 9 insertions, 3 deletions
diff --git a/ethchain/vm.go b/ethchain/vm.go
index 85136e435..9720d8be1 100644
--- a/ethchain/vm.go
+++ b/ethchain/vm.go
@@ -326,9 +326,15 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
case CALLDATALOAD:
require(1)
offset := stack.Pop().Int64()
- val := closure.Args[offset : offset+32]
- stack.Push(ethutil.BigD(val))
+ var data []byte
+ if len(closure.Args) >= int(offset+32) {
+ data = closure.Args[offset : offset+32]
+ } else {
+ data = []byte{0}
+ }
+
+ stack.Push(ethutil.BigD(data))
case CALLDATASIZE:
stack.Push(big.NewInt(int64(len(closure.Args))))
case GASPRICE:
@@ -498,7 +504,7 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro
contract.AddAmount(value)
// Create a new callable closure
- closure := NewClosure(closure.Object(), contract, contract.script, vm.state, gas, closure.Price)
+ closure := NewClosure(closure, contract, contract.script, vm.state, gas, closure.Price)
// Executer the closure and get the return value (if any)
ret, _, err := closure.Call(vm, args, hook)
if err != nil {