summaryrefslogtreecommitdiff
path: root/src/pkg/xml/read.go
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2011-05-04 15:46:02 +0200
committerOndřej Surý <ondrej@sury.org>2011-05-23 11:04:16 +0200
commitfd089e27d7260cee1c7ca449c41cdd0341ebc6cb (patch)
tree3f3f9f49b86ecec97b875de7f407e7d0f2427975 /src/pkg/xml/read.go
parent1f2ed67937cacb19b0b7e54ea3f5866ca34842a0 (diff)
downloadgolang-fd089e27d7260cee1c7ca449c41cdd0341ebc6cb.tar.gz
Imported Upstream version 2011.04.27
Diffstat (limited to 'src/pkg/xml/read.go')
-rw-r--r--src/pkg/xml/read.go9
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 (