diff options
author | Robert Griesemer <gri@golang.org> | 2014-10-01 16:24:17 -0700 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2014-10-01 16:24:17 -0700 |
commit | 7e8218aedd30a3dacb2642ef37ff1f68657071b2 (patch) | |
tree | 992a48053eac9c88dd83515c16aaf8844d6d0c88 /src/encoding/json/decode.go | |
parent | 94f3d8cfed14e4bcb99a0389ea083cfc2ae3ab1d (diff) | |
download | go-git-7e8218aedd30a3dacb2642ef37ff1f68657071b2.tar.gz |
encoding/json: don't panic on incorrect map argument
Fixes #8305.
LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/145680044
Diffstat (limited to 'src/encoding/json/decode.go')
-rw-r--r-- | src/encoding/json/decode.go | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/encoding/json/decode.go b/src/encoding/json/decode.go index af1c908ad7..67ec37388f 100644 --- a/src/encoding/json/decode.go +++ b/src/encoding/json/decode.go @@ -445,7 +445,7 @@ func (d *decodeState) array(v reflect.Value) { } // object consumes an object from d.data[d.off-1:], decoding into the value v. -// the first byte of the object ('{') has been read already. +// the first byte ('{') of the object has been read already. func (d *decodeState) object(v reflect.Value) { // Check for unmarshaler. u, ut, pv := d.indirect(v, false) @@ -478,7 +478,9 @@ func (d *decodeState) object(v reflect.Value) { t := v.Type() if t.Key().Kind() != reflect.String { d.saveError(&UnmarshalTypeError{"object", v.Type()}) - break + d.off-- + d.next() // skip over { } in input + return } if v.IsNil() { v.Set(reflect.MakeMap(t)) |