aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/xml
diff options
context:
space:
mode:
Diffstat (limited to 'src/encoding/xml')
-rw-r--r--src/encoding/xml/read.go6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/encoding/xml/read.go b/src/encoding/xml/read.go
index 43be08eeef..c1c843e4c0 100644
--- a/src/encoding/xml/read.go
+++ b/src/encoding/xml/read.go
@@ -284,7 +284,8 @@ func (d *Decoder) unmarshalAttr(val reflect.Value, attr Attr) error {
// Slice of element values.
// Grow slice.
n := val.Len()
- val.Set(reflect.Append(val, reflect.Zero(val.Type().Elem())))
+ val.Grow(1)
+ val.SetLen(n + 1)
// Recur to read element into slice.
if err := d.unmarshalAttr(val.Index(n), attr); err != nil {
@@ -410,7 +411,8 @@ func (d *Decoder) unmarshal(val reflect.Value, start *StartElement, depth int) e
// Slice of element values.
// Grow slice.
n := v.Len()
- v.Set(reflect.Append(val, reflect.Zero(v.Type().Elem())))
+ v.Grow(1)
+ v.SetLen(n + 1)
// Recur to read element into slice.
if err := d.unmarshal(v.Index(n), start, depth+1); err != nil {