summary refs log tree commit diff stats
path: root/lib/system
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2013-09-10 22:04:12 +0200
committerAraq <rumpf_a@web.de>2013-09-10 22:04:12 +0200
commit275c7ccf82e03622258c135890c0419e70ee0884 (patch)
tree986a3e9a990c26dc9b0ad6fedbbdfd1ac49f3d9d /lib/system
parent138db5a85d1cb613d126241139471e849150ca05 (diff)
downloadNim-275c7ccf82e03622258c135890c0419e70ee0884.tar.gz
fixes #575
Diffstat (limited to 'lib/system')
-rw-r--r--lib/system/assign.nim2
-rw-r--r--lib/system/channels.nim4
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)