From ac36f232bc7d4354129b7fb48a9458e43c3a972d Mon Sep 17 00:00:00 2001 From: Damian Gryski Date: Tue, 7 Mar 2023 10:29:02 -0800 Subject: [PATCH] reflect: MapIter.Next() needs to allocate new keys/values every time --- src/reflect/value.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/reflect/value.go b/src/reflect/value.go index 8e2b0320..346ca27f 100644 --- a/src/reflect/value.go +++ b/src/reflect/value.go @@ -850,10 +850,8 @@ func (v Value) MapRange() *MapIter { } return &MapIter{ - m: v, - it: hashmapNewIterator(), - key: New(v.typecode.Key()), - val: New(v.typecode.Elem()), + m: v, + it: hashmapNewIterator(), } } @@ -883,6 +881,9 @@ func (it *MapIter) Value() Value { } func (it *MapIter) Next() bool { + it.key = New(it.m.typecode.Key()) + it.val = New(it.m.typecode.Elem()) + it.valid = hashmapNext(it.m.pointer(), it.it, it.key.value, it.val.value) return it.valid }