diff options
author | Oscar NihlgÄrd <oscarnihlgard@gmail.com> | 2019-11-29 11:15:21 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-11-29 11:15:20 +0100 |
commit | 5456da3ca9fe900954a393a707281952a168c8b6 (patch) | |
tree | fcb43c15eb5d6e41696ece892a308cce345af098 | |
parent | 49db2a08ba78a5964067c5107d3de232c120daa4 (diff) | |
download | Nim-5456da3ca9fe900954a393a707281952a168c8b6.tar.gz |
Fix sequtils.delete bug with out of bounds indexes (#12506)
-rw-r--r-- | lib/pure/collections/sequtils.nim | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/pure/collections/sequtils.nim b/lib/pure/collections/sequtils.nim index 0bf5f82d3..a20f0d0b7 100644 --- a/lib/pure/collections/sequtils.nim +++ b/lib/pure/collections/sequtils.nim @@ -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] dest.delete(3, 8) assert outcome == dest - + doAssert first <= last + if first >= s.len: + return var i = first var j = min(len(s), last+1) var newLen = len(s)-j+i @@ -1173,6 +1175,9 @@ when isMainModule: assert outcome == dest, """\ 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]""" + var x = @[1, 2, 3] + x.delete(100, 100) + assert x == @[1, 2, 3] block: # insert tests var dest = @[1, 1, 1, 1, 1, 1, 1, 1] |