X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FTest-Valgrind.git;a=blobdiff_plain;f=t%2Flib%2FTest%2FValgrind%2FTest%2FAction.pm;h=369a92155aa2cb5c4a74dbadb78ea38690ece7a6;hp=8b41a68d6239bff23f9c0b5dc196a8312fcd3c25;hb=cc7a828047363ac6c6021fd0857e4748ac0e646b;hpb=cea977523ce9c4be865b97a0813a5e14cce873f9 diff --git a/t/lib/Test/Valgrind/Test/Action.pm b/t/lib/Test/Valgrind/Test/Action.pm index 8b41a68..369a921 100644 --- a/t/lib/Test/Valgrind/Test/Action.pm +++ b/t/lib/Test/Valgrind/Test/Action.pm @@ -30,8 +30,15 @@ sub report_smart { if ($report->can('is_leak') and $report->is_leak) { my $data = $report->data; - my $trace = join ' ', map { $_->[2] } @{$data->{stack} || []}[0 .. 2]; - if ($trace eq 'malloc XS_Test__Valgrind_leak Perl_pp_entersub') { + my @trace = map $_->[2] || '?', + @{$data->{stack} || []}[0 .. 3]; + my $valid_trace = ( + $trace[0] eq 'malloc' + and $trace[1] eq 'tv_leak' + and ($trace[2] eq 'Perl_pp_entersub' or $trace[3] eq 'Perl_pp_entersub') + ); + + if ($valid_trace) { my $tb = Test::Builder->new; $tb->diag("The subsequent report was correctly caught:\n" . $report->dump); $tb->is_eq($data->{leakedbytes}, 10_000, '10_000 bytes leaked');