fixes #6433
This commit is contained in:
parent
d3dc753732
commit
eeb2661a28
1 changed files with 11 additions and 6 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue