summary refs log tree commit diff stats
path: root/lib
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2019-06-26 19:34:05 +0200
committerAndreas Rumpf <rumpf_a@web.de>2019-06-26 19:34:05 +0200
commite083a1533b40ed768b2085852b714ea8e5564f4f (patch)
treef05cdff70c0ef7be93ac225962ad760cae012a63 /lib
parentf288e1b11ab3c796b213fe139f6dcb9c1897218f (diff)
downloadNim-e083a1533b40ed768b2085852b714ea8e5564f4f.tar.gz
fixes #11098
Diffstat (limited to 'lib')
-rw-r--r--lib/system.nim10
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/system.nim b/lib/system.nim
index d6f117d39..2044f8056 100644
--- a/lib/system.nim
+++ b/lib/system.nim
@@ -997,8 +997,7 @@ proc newSeqOfCap*[T](cap: Natural): seq[T] {.
   ##   assert len(x) == 1
   discard
 
-when not defined(JS) and not defined(gcDestructors):
-  # XXX enable this for --gc:destructors
+when not defined(JS):
   proc newSeqUninitialized*[T: SomeNumber](len: Natural): seq[T] =
     ## Creates a new sequence of type ``seq[T]`` with length ``len``.
     ##
@@ -1011,8 +1010,11 @@ when not defined(JS) and not defined(gcDestructors):
     ##   assert len(x) == 3
     ##   x[0] = 10
     result = newSeqOfCap[T](len)
-    var s = cast[PGenericSeq](result)
-    s.len = len
+    when defined(gcDestructors):
+      cast[ptr int](addr result)[] = len
+    else:
+      var s = cast[PGenericSeq](result)
+      s.len = len
 
 proc len*[TOpenArray: openArray|varargs](x: TOpenArray): int {.
   magic: "LengthOpenArray", noSideEffect.}