Skip to content
16 changes: 10 additions & 6 deletions gnovm/pkg/gnolang/values.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand All @@ -674,23 +675,26 @@ func (ml *MapList) UnmarshalAmino(mlimg MapListImage) error {
func (ml *MapList) Append(alloc *Allocator, key TypedValue) *MapListItem {
alloc.AllocateMapItem()
item := &MapListItem{
Prev: ml.Tail,
Next: nil,
Key: key,
Key: key,
// Value: undefined,
}
if ml.Head == nil {
ml.Head = item
ml.Tail = item
ml.Size = 1
} else {
item.Prev = ml.Tail
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
Expand Down
Loading