From ca409520669677904d3367881b94b4a18b0a4fed Mon Sep 17 00:00:00 2001 From: Andreas Schultz Date: Fri, 21 Sep 2018 09:17:09 +0200 Subject: [PATCH] replace list comprehension with recursive invokation in pr/2 The list comprehension fail on improper lists, use a recursive call into pr/2 instead. Fixes #477. --- src/lager.erl | 4 ++-- test/pr_composite_test.erl | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/lager.erl b/src/lager.erl index 5abdefe..f280bff 100644 --- a/src/lager.erl +++ b/src/lager.erl @@ -577,8 +577,8 @@ pr(Record, Module, Options) when is_tuple(Record), is_atom(element(1, Record)), error:undef -> Record end; -pr(List, Module, Options) when is_list(List), is_list(Options) -> - [pr(Element, Module, Options) || Element <- List]; +pr([Head|Tail], Module, Options) when is_list(Options) -> + [pr(Head, Module, Options)|pr(Tail, Module, Options)]; pr(Record, _, _) -> Record. diff --git a/test/pr_composite_test.erl b/test/pr_composite_test.erl index add8381..66807bf 100644 --- a/test/pr_composite_test.erl +++ b/test/pr_composite_test.erl @@ -38,3 +38,10 @@ list_of_records_test() -> ?assertEqual([{'$lager_record', a, [{field1, 1},{field2, a2}]}, {'$lager_record', a, [{field1, 2},{field2, a2}]}], Pr_As). + +improper_list_test() -> + A = #a{field1 = [1|2], field2 = a2}, + Pr_A = lager:pr(A, ?MODULE), + ?assertEqual({'$lager_record',a, + [{field1,[1|2]},{field2,a2}]}, + Pr_A).