summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--lib/core/seqs.nim7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/core/seqs.nim b/lib/core/seqs.nim
index 9c88040ba..f8cba889c 100644
--- a/lib/core/seqs.nim
+++ b/lib/core/seqs.nim
@@ -172,7 +172,12 @@ proc setLen[T](s: var seq[T], newlen: Natural) =
     if newlen < s.len:
       shrink(s, newLen)
     else:
-      grow(s, newLen, default(T))
+      let oldLen = s.len
+      if newLen <= oldLen: return
+      var xu = cast[ptr NimSeqV2[T]](addr s)
+      if xu.p == nil or xu.p.cap < newLen:
+        xu.p = cast[typeof(xu.p)](prepareSeqAdd(oldLen, xu.p, newLen - oldLen, sizeof(T)))
+      xu.len = newLen
 
 when false:
   proc resize[T](s: var NimSeqV2[T]) =