diff options
author | Siri Hansen <[email protected]> | 2017-09-18 12:11:43 +0200 |
---|---|---|
committer | Siri Hansen <[email protected]> | 2017-09-18 12:11:43 +0200 |
commit | 70dc180c85793a32e8b30c0db3b66add1b789bfb (patch) | |
tree | bba2cca9537e67d0dc0f42c52174db9ef5d9c3f9 /lib/kernel/src/error_logger.erl | |
parent | f4a7f8a1f617e46653267bb18b9f7f635437d6d1 (diff) | |
parent | 2b68cd320d28f6bf9b41bb8d52d34cef15e4baf2 (diff) | |
download | otp-70dc180c85793a32e8b30c0db3b66add1b789bfb.tar.gz otp-70dc180c85793a32e8b30c0db3b66add1b789bfb.tar.bz2 otp-70dc180c85793a32e8b30c0db3b66add1b789bfb.zip |
Merge branch 'siri/unicode-fixup' into maint
* siri/unicode-fixup:
kernel: Don't call other modules from simple error logger
Diffstat (limited to 'lib/kernel/src/error_logger.erl')
-rw-r--r-- | lib/kernel/src/error_logger.erl | 33 |
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(). |