aboutsummaryrefslogtreecommitdiff
path: root/src/reflect
diff options
context:
space:
mode:
authorJosh Bleecher Snyder <josharian@gmail.com>2021-05-21 09:35:46 -0700
committerJosh Bleecher Snyder <josharian@gmail.com>2021-09-05 23:10:46 +0000
commit7619a4528d506277f44e8d4b70366b5b5633b40f (patch)
tree320824745c186a172ab632694483b50374b97ed6 /src/reflect
parent1b2d794ca3ba60c2dbc958a271662784a7122739 (diff)
downloadgo-7619a4528d506277f44e8d4b70366b5b5633b40f.tar.gz
go-7619a4528d506277f44e8d4b70366b5b5633b40f.zip
reflect: improve panic when MapIter has no associated map Value
it := new(reflect.MapIter) it.Next() This generates a nil pointer dereference panic from reflect.Value.pointer. Generate a clearer panic. For #46293 Change-Id: I32a22c797e1ba3a7b4e70b38ceb4dedb44d264fa Reviewed-on: https://go-review.googlesource.com/c/go/+/321890 Trust: Josh Bleecher Snyder <josharian@gmail.com> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/reflect')
-rw-r--r--src/reflect/value.go3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/reflect/value.go b/src/reflect/value.go
index 1a61cb897c..90f31bae0a 100644
--- a/src/reflect/value.go
+++ b/src/reflect/value.go
@@ -1686,6 +1686,9 @@ func (it *MapIter) SetValue(dst Value) {
// entry. It returns false when the iterator is exhausted; subsequent
// calls to Key, Value, or Next will panic.
func (it *MapIter) Next() bool {
+ if !it.m.IsValid() {
+ panic("MapIter.Next called on an iterator that does not have an associated map Value")
+ }
if !it.hiter.initialized() {
mapiterinit(it.m.typ, it.m.pointer(), &it.hiter)
} else {