diff
diff copied to clipboard
`Enum.OutOfBoundsError` when comparing against empty string or list on Elixir 1.2.2 and diff 1.0.0
Examples to reproduce the issue:
iex> Diff.diff [1,2,3,4,5], []
** (Enum.OutOfBoundsError) out of bounds error
(elixir) lib/enum.ex:722: Enum.fetch!/2
lib/diff.ex:94: anonymous fn/5 in Diff.longest_common_subsequence/4
(elixir) lib/enum.ex:1478: anonymous fn/3 in Enum.reduce/3
(elixir) lib/range.ex:84: Enumerable.Range.reduce/5
(elixir) lib/enum.ex:1477: Enum.reduce/3
(elixir) lib/enum.ex:1478: anonymous fn/3 in Enum.reduce/3
(elixir) lib/range.ex:80: Enumerable.Range.reduce/5
(elixir) lib/enum.ex:1477: Enum.reduce/3
iex> Diff.diff [], [1,2,3,4,5]
** (Enum.OutOfBoundsError) out of bounds error
(elixir) lib/enum.ex:722: Enum.fetch!/2
lib/diff.ex:94: anonymous fn/5 in Diff.longest_common_subsequence/4
(elixir) lib/enum.ex:1478: anonymous fn/3 in Enum.reduce/3
(elixir) lib/range.ex:80: Enumerable.Range.reduce/5
(elixir) lib/enum.ex:1477: Enum.reduce/3
(elixir) lib/enum.ex:1478: anonymous fn/3 in Enum.reduce/3
(elixir) lib/range.ex:84: Enumerable.Range.reduce/5
(elixir) lib/enum.ex:1477: Enum.reduce/3
iex> Diff.diff "", "asdf"
** (Enum.OutOfBoundsError) out of bounds error
(elixir) lib/enum.ex:722: Enum.fetch!/2
lib/diff.ex:94: anonymous fn/5 in Diff.longest_common_subsequence/4
(elixir) lib/enum.ex:1478: anonymous fn/3 in Enum.reduce/3
(elixir) lib/range.ex:80: Enumerable.Range.reduce/5
(elixir) lib/enum.ex:1477: Enum.reduce/3
(elixir) lib/enum.ex:1478: anonymous fn/3 in Enum.reduce/3
(elixir) lib/range.ex:84: Enumerable.Range.reduce/5
(elixir) lib/enum.ex:1477: Enum.reduce/3
iex> Diff.diff "asdf", ""
** (Enum.OutOfBoundsError) out of bounds error
(elixir) lib/enum.ex:722: Enum.fetch!/2
lib/diff.ex:94: anonymous fn/5 in Diff.longest_common_subsequence/4
(elixir) lib/enum.ex:1478: anonymous fn/3 in Enum.reduce/3
(elixir) lib/range.ex:84: Enumerable.Range.reduce/5
(elixir) lib/enum.ex:1477: Enum.reduce/3
(elixir) lib/enum.ex:1478: anonymous fn/3 in Enum.reduce/3
(elixir) lib/range.ex:80: Enumerable.Range.reduce/5
(elixir) lib/enum.ex:1477: Enum.reduce/3
For now I can work around it by capturing empty comparison lists before calling Diff.diff, but it's still inconvenient.