diff --git a/gnovm/pkg/gnolang/values.go b/gnovm/pkg/gnolang/values.go index 95a5f9d9dde..5f957acfaa4 100644 --- a/gnovm/pkg/gnolang/values.go +++ b/gnovm/pkg/gnolang/values.go @@ -657,15 +657,16 @@ func (ml MapList) MarshalAmino() (MapListImage, error) { func (ml *MapList) UnmarshalAmino(mlimg MapListImage) error { for i, item := range mlimg.List { if i == 0 { + item.Prev = nil ml.Head = item ml.Tail = item - item.Prev = nil + ml.Size = 1 } else { item.Prev = ml.Tail ml.Tail.Next = item ml.Tail = item + ml.Size++ } - ml.Size++ } return nil } @@ -682,15 +683,19 @@ func (ml *MapList) Append(alloc *Allocator, key TypedValue) *MapListItem { if ml.Head == nil { ml.Head = item ml.Tail = item + ml.Size = 1 } else { ml.Tail.Next = item ml.Tail = item + ml.Size++ } - ml.Size++ return item } func (ml *MapList) Remove(mli *MapListItem) { + if ml.Size == 0 { + return + } prev, next := mli.Prev, mli.Next if prev == nil { ml.Head = next