Skip to content

Commit eb96d73

Browse files
author
José Valim
committed
Add a count guard check for slice
1 parent cbb1f45 commit eb96d73

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

lib/elixir/lib/enum.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1312,11 +1312,11 @@ defmodule Enum do
13121312

13131313
def slice(_coll, _start, 0), do: []
13141314

1315-
def slice(coll, start, count) when is_list(coll) and start >= 0 do
1315+
def slice(coll, start, count) when is_list(coll) and start >= 0 and count >= 0 do
13161316
do_slice(coll, start, count)
13171317
end
13181318

1319-
def slice(coll, start, count) when start >= 0 do
1319+
def slice(coll, start, count) when start >= 0 and count >= 0 do
13201320
{ _, _, list } = Enumerable.reduce(coll, { start, count, [] }, fn
13211321
_entry, { start, count, _list } when start > 0 ->
13221322
{ start-1, count, [] }

lib/elixir/lib/string.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -822,11 +822,11 @@ defmodule String do
822822
end
823823
end
824824

825-
def slice(string, start, len) when start >= 0 do
825+
def slice(string, start, len) when start >= 0 and len >= 0 do
826826
do_slice(next_grapheme(string), start, start + len - 1, 0, "")
827827
end
828828

829-
def slice(string, start, len) when start < 0 do
829+
def slice(string, start, len) when start < 0 and len >= 0 do
830830
real_start_pos = do_length(next_grapheme(string)) - abs(start)
831831
case real_start_pos >= 0 do
832832
true -> do_slice(next_grapheme(string), real_start_pos, real_start_pos + len - 1, 0, "")

0 commit comments

Comments
 (0)