From 734443d725724df0d328d27982fbc2c54d1ff683 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Mon, 28 Nov 2016 11:03:01 +0100 Subject: [PATCH] system.deepCopy should show old behaviour --- lib/system/deepcopy.nim | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/system/deepcopy.nim b/lib/system/deepcopy.nim index b1609252cb..c137b3cf61 100644 --- a/lib/system/deepcopy.nim +++ b/lib/system/deepcopy.nim @@ -134,7 +134,7 @@ proc genericDeepCopyAux(dest, src: pointer, mt: PNimType; tab: var PtrTable) = else: let z = tab.get(s2) if z == nil: - when declared(usrToCell) and false: + when declared(usrToCell): let x = usrToCell(s2) let realType = x.typ let z = newObj(realType, realType.base.size) @@ -142,6 +142,11 @@ proc genericDeepCopyAux(dest, src: pointer, mt: PNimType; tab: var PtrTable) = tab.put(s2, z) genericDeepCopyAux(z, s2, realType.base, tab) else: + when false: + # addition check disabled + let x = usrToCell(s2) + let realType = x.typ + sysAssert realType == mt, " types do differ" # this version should work for any possible GC: let size = if mt.base.kind == tyObject: cast[ptr PNimType](s2)[].size else: mt.base.size let z = newObj(mt, size)