From d58e633e151dc481a728daf8378055caad88d8e1 Mon Sep 17 00:00:00 2001 From: Shane Howley Date: Tue, 11 Feb 2014 12:38:48 +0000 Subject: [PATCH] Fixed issue whereby element(1, ...) is called on every tuple nested inside a pretty printed record regardless of size. Modified unit test to test 0 size tuple case. --- src/lager.erl | 6 ++++-- test/pr_nested_record_test.erl | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/lager.erl b/src/lager.erl index c075544..d335a3f 100644 --- a/src/lager.erl +++ b/src/lager.erl @@ -378,8 +378,10 @@ pr(Record, _) -> Record. zip([FieldName|RecordFields], [FieldValue|Record], Module, ToReturn) -> - case is_tuple(FieldValue) andalso is_atom(element(1, FieldValue)) - andalso is_record_known(FieldValue, Module) of + case is_tuple(FieldValue) andalso + tuple_size(FieldValue) > 0 andalso + is_atom(element(1, FieldValue)) andalso + is_record_known(FieldValue, Module) of false -> zip(RecordFields, Record, Module, [{FieldName, FieldValue}|ToReturn]); _Else -> diff --git a/test/pr_nested_record_test.erl b/test/pr_nested_record_test.erl index ee19ef7..7a6e284 100644 --- a/test/pr_nested_record_test.erl +++ b/test/pr_nested_record_test.erl @@ -12,10 +12,10 @@ nested_record_test() -> A = #a{field1 = x, field2 = y}, - B = #b{field1 = A, field2 = z}, + B = #b{field1 = A, field2 = {}}, Pr_B = lager:pr(B, ?MODULE), ?assertEqual({'$lager_record', b, [{field1, {'$lager_record', a, [{field1, x},{field2, y}]}}, - {field2, z}]}, + {field2, {}}]}, Pr_B).