diff options
author | Araq <rumpf_a@web.de> | 2013-09-10 22:04:12 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2013-09-10 22:04:12 +0200 |
commit | 275c7ccf82e03622258c135890c0419e70ee0884 (patch) | |
tree | 986a3e9a990c26dc9b0ad6fedbbdfd1ac49f3d9d /lib/system | |
parent | 138db5a85d1cb613d126241139471e849150ca05 (diff) | |
download | Nim-275c7ccf82e03622258c135890c0419e70ee0884.tar.gz |
fixes #575
Diffstat (limited to 'lib/system')
-rw-r--r-- | lib/system/assign.nim | 2 | ||||
-rw-r--r-- | lib/system/channels.nim | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/lib/system/assign.nim b/lib/system/assign.nim index 19d4ebf57..3b43abcd1 100644 --- a/lib/system/assign.nim +++ b/lib/system/assign.nim @@ -73,6 +73,8 @@ proc genericAssignAux(dest, src: Pointer, mt: PNimType, shallow: bool) = # sequence reallocations: var pint = cast[ptr PNimType](dest) pint[] = cast[ptr PNimType](src)[] + if mt.base != nil: + genericAssignAux(dest, src, mt.base, shallow) genericAssignAux(dest, src, mt.node, shallow) of tyTuple: genericAssignAux(dest, src, mt.node, shallow) diff --git a/lib/system/channels.nim b/lib/system/channels.nim index f5bcdec03..d0294322a 100644 --- a/lib/system/channels.nim +++ b/lib/system/channels.nim @@ -120,7 +120,9 @@ proc storeAux(dest, src: Pointer, mt: PNimType, t: PRawChannel, # copy type field: var pint = cast[ptr PNimType](dest) # XXX use dynamic type here! - pint[] = mt + pint[] = mt + if mt.base != nil: + storeAux(dest, src, mt.base, t, mode) storeAux(dest, src, mt.node, t, mode) of tyTuple: storeAux(dest, src, mt.node, t, mode) |