summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorOscar NihlgÄrd <oscarnihlgard@gmail.com>2019-11-29 11:15:21 +0100
committerAndreas Rumpf <rumpf_a@web.de>2019-11-29 11:15:20 +0100
commit5456da3ca9fe900954a393a707281952a168c8b6 (patch)
treefcb43c15eb5d6e41696ece892a308cce345af098
parent49db2a08ba78a5964067c5107d3de232c120daa4 (diff)
downloadNim-5456da3ca9fe900954a393a707281952a168c8b6.tar.gz
Fix sequtils.delete bug with out of bounds indexes (#12506)
-rw-r--r--lib/pure/collections/sequtils.nim7
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]