diff options
author | Ondřej Surý <ondrej@sury.org> | 2011-05-04 15:46:02 +0200 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2011-05-23 11:04:16 +0200 |
commit | fd089e27d7260cee1c7ca449c41cdd0341ebc6cb (patch) | |
tree | 3f3f9f49b86ecec97b875de7f407e7d0f2427975 /src/pkg/xml/read.go | |
parent | 1f2ed67937cacb19b0b7e54ea3f5866ca34842a0 (diff) | |
download | golang-fd089e27d7260cee1c7ca449c41cdd0341ebc6cb.tar.gz |
Imported Upstream version 2011.04.27
Diffstat (limited to 'src/pkg/xml/read.go')
-rw-r--r-- | src/pkg/xml/read.go | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/pkg/xml/read.go b/src/pkg/xml/read.go index e2b349c3f..554b2a61b 100644 --- a/src/pkg/xml/read.go +++ b/src/pkg/xml/read.go @@ -220,10 +220,13 @@ func (p *Parser) unmarshal(val reflect.Value, start *StartElement) os.Error { } if pv := val; pv.Kind() == reflect.Ptr { - if pv.IsNil() { - pv.Set(reflect.New(pv.Type().Elem())) + if pv.Pointer() == 0 { + zv := reflect.Zero(pv.Type().Elem()) + pv.Set(zv.Addr()) + val = zv + } else { + val = pv.Elem() } - val = pv.Elem() } var ( |