diff --git a/src/encoding/json/decode.go b/src/encoding/json/decode.go index 01af489b563d53a6ae01d00aec949a87291147f6..7ad66cfeb615520eb1b998a7a95a6d28fdd887a0 100644 --- a/src/encoding/json/decode.go +++ b/src/encoding/json/decode.go @@ -540,17 +540,10 @@ func (d *decodeState) array(v reflect.Value) error { break } - // Get element of array, growing if necessary. + // Expand slice length, growing the slice if necessary. if v.Kind() == reflect.Slice { - // Grow slice if necessary if i >= v.Cap() { - newcap := v.Cap() + v.Cap()/2 - if newcap < 4 { - newcap = 4 - } - newv := reflect.MakeSlice(v.Type(), v.Len(), newcap) - reflect.Copy(newv, v) - v.Set(newv) + v.Grow(1) } if i >= v.Len() { v.SetLen(i + 1)