diff options
-rw-r--r-- | core/vm/memory.go | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/core/vm/memory.go b/core/vm/memory.go index dd47fa1b5..f5984d82f 100644 --- a/core/vm/memory.go +++ b/core/vm/memory.go @@ -15,10 +15,17 @@ func NewMemory() *Memory { } func (m *Memory) Set(offset, size uint64, value []byte) { + // If the length of the store is 0 this is a complete failure + // memory size is set prior to calling this method so enough size + // should always be available. + if len(m.store) == 0 { + panic("INVALID memory: store empty") + } + value = common.RightPadBytes(value, int(size)) totSize := offset + size - lenSize := uint64(len(m.store) - 1) + lenSize := int64(len(m.store) - 1) if totSize > lenSize { // Calculate the diff between the sizes diff := totSize - lenSize |