Commit 880442f1 authored by Emil Hessman's avatar Emil Hessman Committed by Brad Fitzpatrick

encoding/json: Fix missing error when trying to unmarshal null string into int,…

encoding/json: Fix missing error when trying to unmarshal null string into int, for successive ,string option

Fixes #7046.

R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/47260043
parent d1805791
......@@ -561,6 +561,7 @@ func (d *decodeState) object(v reflect.Value) {
if destring {
d.value(reflect.ValueOf(&d.tempstr))
d.literalStore([]byte(d.tempstr), subv, true)
d.tempstr = "" // Zero scratch space for successive values.
} else {
d.value(subv)
}
......
......@@ -1060,6 +1060,21 @@ func TestEmptyString(t *testing.T) {
}
}
// Test that the returned error is non-nil when trying to unmarshal null string into int, for successive ,string option
// Issue 7046
func TestNullString(t *testing.T) {
type T struct {
A int `json:",string"`
B int `json:",string"`
}
data := []byte(`{"A": "1", "B": null}`)
var s T
err := Unmarshal(data, &s)
if err == nil {
t.Fatalf("expected error; got %v", s)
}
}
func intp(x int) *int {
p := new(int)
*p = x
......@@ -1110,8 +1125,8 @@ func TestInterfaceSet(t *testing.T) {
// Issue 2540
func TestUnmarshalNulls(t *testing.T) {
jsonData := []byte(`{
"Bool" : null,
"Int" : null,
"Bool" : null,
"Int" : null,
"Int8" : null,
"Int16" : null,
"Int32" : null,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment