From 282128ab66b6391c4ab9bc76cd19a63a5bce16f8 Mon Sep 17 00:00:00 2001 From: Clyybber Date: Wed, 15 Jul 2020 23:33:58 +0200 Subject: [PATCH] Fix #14994 (#14996) * Fix #14994 * Revert misplaced "optimization" * Typo --- lib/pure/collections/sequtils.nim | 3 ++- lib/system/seqs_v2.nim | 1 + tests/arc/tarcmisc.nim | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/pure/collections/sequtils.nim b/lib/pure/collections/sequtils.nim index f101d508e7..51d8ade85d 100644 --- a/lib/pure/collections/sequtils.nim +++ b/lib/pure/collections/sequtils.nim @@ -527,7 +527,8 @@ proc insert*[T](dest: var seq[T], src: openArray[T], pos = 0) = assert dest == outcome var j = len(dest) - 1 - var i = len(dest) + len(src) - 1 + var i = j + len(src) + if i == j: return dest.setLen(i + 1) # Move items after `pos` to the end of the sequence. diff --git a/lib/system/seqs_v2.nim b/lib/system/seqs_v2.nim index 4001e97c31..3c94a03f94 100644 --- a/lib/system/seqs_v2.nim +++ b/lib/system/seqs_v2.nim @@ -82,6 +82,7 @@ proc shrink*[T](x: var seq[T]; newLen: Natural) = proc grow*[T](x: var seq[T]; newLen: Natural; value: T) = let oldLen = x.len + #sysAssert newLen >= x.len, "invalid newLen parameter for 'grow'" if newLen <= oldLen: return var xu = cast[ptr NimSeqV2[T]](addr x) if xu.p == nil or xu.p.cap < newLen: diff --git a/tests/arc/tarcmisc.nim b/tests/arc/tarcmisc.nim index 2d7e6b455e..56aa3ec3b3 100644 --- a/tests/arc/tarcmisc.nim +++ b/tests/arc/tarcmisc.nim @@ -21,6 +21,8 @@ whiley ends :( (x: "9") (x: "10") 0 +new line before - @['a'] +new line after - @['a'] closed destroying variable: 20 destroying variable: 10 @@ -243,3 +245,15 @@ l.setParent(l) # bug #14968 import times let currentTime = now().utc + + +# bug #14994 +import sequtils +var newLine = @['a'] +let indent = newSeq[char]() + +echo "new line before - ", newline + +newline.insert(indent, 0) + +echo "new line after - ", newline