summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiri Hansen <siri@erlang.org>2017-09-18 12:11:43 +0200
committerSiri Hansen <siri@erlang.org>2017-09-18 12:11:43 +0200
commit70dc180c85793a32e8b30c0db3b66add1b789bfb (patch)
treebba2cca9537e67d0dc0f42c52174db9ef5d9c3f9
parentf4a7f8a1f617e46653267bb18b9f7f635437d6d1 (diff)
parent2b68cd320d28f6bf9b41bb8d52d34cef15e4baf2 (diff)
downloaderlang-70dc180c85793a32e8b30c0db3b66add1b789bfb.tar.gz
Merge branch 'siri/unicode-fixup' into maint
* siri/unicode-fixup: kernel: Don't call other modules from simple error logger
-rw-r--r--lib/kernel/src/error_logger.erl33
1 files changed, 24 insertions, 9 deletions
diff --git a/lib/kernel/src/error_logger.erl b/lib/kernel/src/error_logger.erl
index f07ec52cfa..585507c545 100644
--- a/lib/kernel/src/error_logger.erl
+++ b/lib/kernel/src/error_logger.erl
@@ -499,16 +499,31 @@ display4(A = [_|_]) ->
display4(A) ->
erlang:display(A).
-
-string_p(Term) when is_list(Term) ->
- string_p1(lists:flatten(Term));
-string_p(_Term) ->
- false.
-
-string_p1([]) ->
+string_p([]) ->
false;
-string_p1(FlatList) ->
- io_lib:printable_list(FlatList).
+string_p(Term) ->
+ string_p1(Term).
+
+string_p1([H|T]) when is_integer(H), H >= $\040, H =< $\176 ->
+ string_p1(T);
+string_p1([H|T]) when is_integer(H), H >= 16#A0, H < 16#D800;
+ is_integer(H), H > 16#DFFF, H < 16#FFFE;
+ is_integer(H), H > 16#FFFF, H =< 16#10FFFF ->
+ string_p1(T);
+string_p1([$\n|T]) -> string_p1(T);
+string_p1([$\r|T]) -> string_p1(T);
+string_p1([$\t|T]) -> string_p1(T);
+string_p1([$\v|T]) -> string_p1(T);
+string_p1([$\b|T]) -> string_p1(T);
+string_p1([$\f|T]) -> string_p1(T);
+string_p1([$\e|T]) -> string_p1(T);
+string_p1([H|T]) when is_list(H) ->
+ case string_p1(H) of
+ true -> string_p1(T);
+ _ -> false
+ end;
+string_p1([]) -> true;
+string_p1(_) -> false.
-spec limit_term(term()) -> term().