diff options
-rw-r--r-- | lib/core/seqs.nim | 7 |
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]) = |