@ -49,6 +49,18 @@ func (self *Memory) Get(offset, size int64) (cpy []byte) {
return
}
func (self *Memory) GetPtr(offset, size int64) []byte {
if size == 0 {
return nil
if len(self.store) > int(offset) {
return self.store[offset : offset+size]
func (m *Memory) Len() int {
return len(m.store)
@ -695,7 +695,7 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
self.Printf("resume %x (%v)", context.Address(), context.Gas)
case RETURN:
offset, size := stack.pop(), stack.pop()
ret := mem.Get(offset.Int64(), size.Int64())
ret := mem.GetPtr(offset.Int64(), size.Int64())
self.Printf(" => [%v, %v] (%d) 0x%x", offset, size, len(ret), ret).Endl()
@ -286,13 +286,13 @@ func TestInputLimitsLight(t *testing.T) {
RunVmTest(fn, t)
func TestStateExample(t *testing.T) {
const fn = "../files/StateTests/stExample.json"
func TestStateSystemOperations(t *testing.T) {
const fn = "../files/StateTests/stSystemOperationsTest.json"