Skip to content

Commit 6cba4f3

Browse files
committed
Merge pull request #4091 from jisaacstone/I4081
Fix issue #4081 UnicodeConversionError would generate invalid strings
2 parents 7537861 + e9aa70a commit 6cba4f3

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

lib/elixir/lib/exception.ex

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -704,9 +704,13 @@ defmodule UnicodeConversionError do
704704
"encoding starting at #{inspect rest}"
705705
end
706706

707-
defp detail([h|_]) do
707+
defp detail([h|_]) when is_integer(h) do
708708
"code point #{h}"
709709
end
710+
711+
defp detail([h|_]) do
712+
detail(h)
713+
end
710714
end
711715

712716
defmodule Enum.OutOfBoundsError do

lib/elixir/test/elixir/list_test.exs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ defmodule ListTest do
158158
"invalid code point 57343", fn ->
159159
List.to_string([0xDFFF])
160160
end
161+
assert_raise UnicodeConversionError,
162+
"invalid encoding starting at <<216, 0>>", fn ->
163+
List.to_string(["a", "b", <<0xD800 :: size(16)>>])
164+
end
161165

162166
assert_raise ArgumentError,
163167
"cannot convert list to string. The list must contain only integers, strings or nested such lists; got: [:a, :b]", fn ->

0 commit comments

Comments
 (0)