Make an attempt to pay for the gas prior to expanding the mem.
This commit is contained in:
		| @@ -2,6 +2,7 @@ package vm | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
|  | 	"fmt" | ||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	"github.com/ethereum/go-ethereum/ethutil" | 	"github.com/ethereum/go-ethereum/ethutil" | ||||||
| @@ -44,6 +45,7 @@ func RunVmTest(p string, t *testing.T) { | |||||||
| 	helper.CreateFileTests(t, p, &tests) | 	helper.CreateFileTests(t, p, &tests) | ||||||
|  |  | ||||||
| 	for name, test := range tests { | 	for name, test := range tests { | ||||||
|  | 		fmt.Println(name) | ||||||
| 		state := state.New(helper.NewTrie()) | 		state := state.New(helper.NewTrie()) | ||||||
| 		for addr, account := range test.Pre { | 		for addr, account := range test.Pre { | ||||||
| 			obj := StateObjectFromAccount(addr, account) | 			obj := StateObjectFromAccount(addr, account) | ||||||
| @@ -113,7 +115,7 @@ func TestEnvironmentalInfo(t *testing.T) { | |||||||
| } | } | ||||||
|  |  | ||||||
| func TestFlowOperation(t *testing.T) { | func TestFlowOperation(t *testing.T) { | ||||||
| 	helper.Logger.SetLogLevel(5) | 	//helper.Logger.SetLogLevel(5) | ||||||
| 	const fn = "../files/vmtests/vmIOandFlowOperationsTest.json" | 	const fn = "../files/vmtests/vmIOandFlowOperationsTest.json" | ||||||
| 	RunVmTest(fn, t) | 	RunVmTest(fn, t) | ||||||
| } | } | ||||||
| @@ -124,6 +126,7 @@ func TestPushDupSwap(t *testing.T) { | |||||||
| } | } | ||||||
|  |  | ||||||
| func TestVMSha3(t *testing.T) { | func TestVMSha3(t *testing.T) { | ||||||
|  | 	helper.Logger.SetLogLevel(5) | ||||||
| 	const fn = "../files/vmtests/vmSha3Test.json" | 	const fn = "../files/vmtests/vmSha3Test.json" | ||||||
| 	RunVmTest(fn, t) | 	RunVmTest(fn, t) | ||||||
| } | } | ||||||
|   | |||||||
| @@ -64,7 +64,7 @@ func (c *Closure) GetOp(x int) OpCode { | |||||||
| } | } | ||||||
|  |  | ||||||
| func (c *Closure) GetByte(x int) byte { | func (c *Closure) GetByte(x int) byte { | ||||||
| 	if x < len(c.Code) { | 	if x > -1 && x < len(c.Code) { | ||||||
| 		return c.Code[x] | 		return c.Code[x] | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|   | |||||||
| @@ -277,7 +277,6 @@ func (self *DebugVm) RunClosure(closure *Closure) (ret []byte, err error) { | |||||||
|  |  | ||||||
| 				addStepGasUsage(memGasUsage) | 				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) | 			return closure.Return(nil), OOG(gas, tmp) | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		mem.Resize(newMemSize.Uint64()) | ||||||
|  |  | ||||||
| 		switch op { | 		switch op { | ||||||
| 		// 0x20 range | 		// 0x20 range | ||||||
| 		case ADD: | 		case ADD: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user