From: Russ Cox Date: Mon, 14 Nov 2011 21:03:23 +0000 (-0500) Subject: encoding/json: decode [] as empty slice, not nil slice X-Git-Tag: weekly.2011-11-18~64 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=53523f6a7d6ca6aa6ec4a1d20af773f333284371;p=gostls13.git encoding/json: decode [] as empty slice, not nil slice Test was already present, but bug in reflect.DeepEqual hid this bug. R=golang-dev, bradfitz CC=golang-dev https://golang.org/cl/5375090 --- diff --git a/src/pkg/encoding/json/decode.go b/src/pkg/encoding/json/decode.go index e786075455..2ea06c50c2 100644 --- a/src/pkg/encoding/json/decode.go +++ b/src/pkg/encoding/json/decode.go @@ -381,6 +381,7 @@ func (d *decodeState) array(v reflect.Value) { d.error(errPhase) } } + if i < av.Len() { if !sv.IsValid() { // Array. Zero the rest. @@ -392,6 +393,9 @@ func (d *decodeState) array(v reflect.Value) { sv.SetLen(i) } } + if i == 0 && av.Kind() == reflect.Slice && sv.IsNil() { + sv.Set(reflect.MakeSlice(sv.Type(), 0, 0)) + } } // object consumes an object from d.data[d.off-1:], decoding into the value v.