From a22056db5988bfa2b1354e0092eabb734c30701c Mon Sep 17 00:00:00 2001 From: obscuren Date: Mon, 1 Dec 2014 20:49:56 +0100 Subject: [PATCH] Make an attempt to pay for the gas prior to expanding the mem. --- tests/vm/gh_test.go | 5 ++++- vm/closure.go | 2 +- vm/vm_debug.go | 3 ++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/vm/gh_test.go b/tests/vm/gh_test.go index 7d98983e7..bd107249b 100644 --- a/tests/vm/gh_test.go +++ b/tests/vm/gh_test.go @@ -2,6 +2,7 @@ package vm import ( "bytes" + "fmt" "testing" "github.com/ethereum/go-ethereum/ethutil" @@ -44,6 +45,7 @@ func RunVmTest(p string, t *testing.T) { helper.CreateFileTests(t, p, &tests) for name, test := range tests { + fmt.Println(name) state := state.New(helper.NewTrie()) for addr, account := range test.Pre { obj := StateObjectFromAccount(addr, account) @@ -113,7 +115,7 @@ func TestEnvironmentalInfo(t *testing.T) { } func TestFlowOperation(t *testing.T) { - helper.Logger.SetLogLevel(5) + //helper.Logger.SetLogLevel(5) const fn = "../files/vmtests/vmIOandFlowOperationsTest.json" RunVmTest(fn, t) } @@ -124,6 +126,7 @@ func TestPushDupSwap(t *testing.T) { } func TestVMSha3(t *testing.T) { + helper.Logger.SetLogLevel(5) const fn = "../files/vmtests/vmSha3Test.json" RunVmTest(fn, t) } diff --git a/vm/closure.go b/vm/closure.go index ef9bbca93..5bd8c1bb8 100644 --- a/vm/closure.go +++ b/vm/closure.go @@ -64,7 +64,7 @@ func (c *Closure) GetOp(x int) OpCode { } func (c *Closure) GetByte(x int) byte { - if x < len(c.Code) { + if x > -1 && x < len(c.Code) { return c.Code[x] } diff --git a/vm/vm_debug.go b/vm/vm_debug.go index b9c1d4bc6..4daa3ab5b 100644 --- a/vm/vm_debug.go +++ b/vm/vm_debug.go @@ -277,7 +277,6 @@ func (self *DebugVm) RunClosure(closure *Closure) (ret []byte, err error) { addStepGasUsage(memGasUsage) - mem.Resize(newMemSize.Uint64()) } } @@ -295,6 +294,8 @@ func (self *DebugVm) RunClosure(closure *Closure) (ret []byte, err error) { return closure.Return(nil), OOG(gas, tmp) } + mem.Resize(newMemSize.Uint64()) + switch op { // 0x20 range case ADD: