This commit is contained in:
Andreas Rumpf 2017-09-25 15:22:07 +02:00
commit eeb2661a28

View file

@ -63,12 +63,17 @@ proc genericAssignAux(dest, src: pointer, mt: PNimType, shallow: bool) =
sysAssert(dest != nil, "genericAssignAux 3") sysAssert(dest != nil, "genericAssignAux 3")
unsureAsgnRef(x, newSeq(mt, seq.len)) unsureAsgnRef(x, newSeq(mt, seq.len))
var dst = cast[ByteAddress](cast[PPointer](dest)[]) var dst = cast[ByteAddress](cast[PPointer](dest)[])
for i in 0..seq.len-1: if ntfNoRefs in mt.base.flags:
genericAssignAux( copyMem(cast[pointer](dst +% GenericSeqSize),
cast[pointer](dst +% i*% mt.base.size +% GenericSeqSize), cast[pointer](cast[ByteAddress](s2) +% GenericSeqSize),
cast[pointer](cast[ByteAddress](s2) +% i *% mt.base.size +% seq.len * mt.base.size)
GenericSeqSize), else:
mt.base, shallow) for i in 0..seq.len-1:
genericAssignAux(
cast[pointer](dst +% i*% mt.base.size +% GenericSeqSize),
cast[pointer](cast[ByteAddress](s2) +% i *% mt.base.size +%
GenericSeqSize),
mt.base, shallow)
of tyObject: of tyObject:
if mt.base != nil: if mt.base != nil:
genericAssignAux(dest, src, mt.base, shallow) genericAssignAux(dest, src, mt.base, shallow)