aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/json/decode.go
diff options
context:
space:
mode:
authorTaesu Pyo <pyotaesu@gmail.com>2018-08-28 15:56:10 +0000
committerDaniel Martí <mvdan@mvdan.cc>2018-08-28 16:00:33 +0000
commit21e85c293d02f8cb243b387b37a3d9c1c16305f7 (patch)
tree636902acb7b98f3db61d2f2f8e23f0cffbf52aa2 /src/encoding/json/decode.go
parent422151ad50d03e142dc298a83523d7d8e2d515c5 (diff)
downloadgo-21e85c293d02f8cb243b387b37a3d9c1c16305f7.tar.xz
encoding/json: fix UnmarshalTypeError without field and struct values
Fixes #26444 Fixes #27275 Change-Id: I9e8cbff79f7643ca8964c572c1a98172b6831730 GitHub-Last-Rev: 7eea2158b67ccab34b45a21e8f4289c36de02d93 GitHub-Pull-Request: golang/go#26719 Reviewed-on: https://go-review.googlesource.com/126897 Reviewed-by: Daniel Martí <mvdan@mvdan.cc> Run-TryBot: Daniel Martí <mvdan@mvdan.cc> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/encoding/json/decode.go')
-rw-r--r--src/encoding/json/decode.go6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/encoding/json/decode.go b/src/encoding/json/decode.go
index 2e734fb39e..fd2bf92dc2 100644
--- a/src/encoding/json/decode.go
+++ b/src/encoding/json/decode.go
@@ -670,6 +670,7 @@ func (d *decodeState) object(v reflect.Value) error {
}
var mapElem reflect.Value
+ originalErrorContext := d.errorContext
for {
// Read opening " of string key or closing }.
@@ -829,8 +830,7 @@ func (d *decodeState) object(v reflect.Value) error {
return errPhase
}
- d.errorContext.Struct = nil
- d.errorContext.Field = ""
+ d.errorContext = originalErrorContext
}
return nil
}
@@ -988,7 +988,7 @@ func (d *decodeState) literalStore(item []byte, v reflect.Value, fromQuoted bool
if fromQuoted {
return fmt.Errorf("json: invalid use of ,string struct tag, trying to unmarshal %q into %v", item, v.Type())
}
- return &UnmarshalTypeError{Value: "number", Type: v.Type(), Offset: int64(d.readIndex())}
+ d.saveError(&UnmarshalTypeError{Value: "number", Type: v.Type(), Offset: int64(d.readIndex())})
case reflect.Interface:
n, err := d.convertNumber(s)
if err != nil {