Fix sequtils.delete bug with out of bounds indexes (#12506)

This commit is contained in:
Oscar Nihlgård 2019-11-29 11:15:21 +01:00 • committed by Andreas Rumpf
commit 5456da3ca9

View file

@ -447,7 +447,9 @@ proc delete*[T](s: var seq[T]; first, last: Natural) =
var dest = @[1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1] var dest = @[1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1]
dest.delete(3, 8) dest.delete(3, 8)
assert outcome == dest assert outcome == dest
doAssert first <= last
if first >= s.len:
return
var i = first var i = first
var j = min(len(s), last+1) var j = min(len(s), last+1)
var newLen = len(s)-j+i var newLen = len(s)-j+i
@ -1173,6 +1175,9 @@ when isMainModule:
assert outcome == dest, """\ assert outcome == dest, """\
Deleting range 3-9 from [1,1,1,2,2,2,2,2,2,1,1,1,1,1] Deleting range 3-9 from [1,1,1,2,2,2,2,2,2,1,1,1,1,1]
is [1,1,1,1,1,1,1,1]""" is [1,1,1,1,1,1,1,1]"""
var x = @[1, 2, 3]
x.delete(100, 100)
assert x == @[1, 2, 3]
block: # insert tests block: # insert tests
var dest = @[1, 1, 1, 1, 1, 1, 1, 1] var dest = @[1, 1, 1, 1, 1, 1, 1, 1]