]> Cypherpunks repositories - gostls13.git/commitdiff
encoding/json: decode [] as empty slice, not nil slice
authorRuss Cox <rsc@golang.org>
Mon, 14 Nov 2011 21:03:23 +0000 (16:03 -0500)
committerRuss Cox <rsc@golang.org>
Mon, 14 Nov 2011 21:03:23 +0000 (16:03 -0500)
Test was already present, but bug in reflect.DeepEqual hid this bug.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/5375090

src/pkg/encoding/json/decode.go

index e7860754557a584b104159d36047f4c1a4eef61c..2ea06c50c277985e216ed2eac3d73d498f71ffa4 100644 (file)
@@ -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.