X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FTest-Valgrind.git;a=blobdiff_plain;f=lib%2FTest%2FValgrind%2FSuppressions.pm;h=a125839a6dff017fee51fd0e9804c66c7ebd80e0;hp=bee6a0dd45a3e7e840b3782b0807998a8cc7e030;hb=a08a925178ff4a5e8a68dc9ecc21d50c67049939;hpb=139a661cde3aaf5fbf8883f35c0acaf77b8205ab diff --git a/lib/Test/Valgrind/Suppressions.pm b/lib/Test/Valgrind/Suppressions.pm index bee6a0d..a125839 100644 --- a/lib/Test/Valgrind/Suppressions.pm +++ b/lib/Test/Valgrind/Suppressions.pm @@ -94,29 +94,30 @@ sub generate { return $status; } -=head2 C +=head2 C - my $mangled_suppression = Test::Valgrind::Suppressions->strip_tail( + my $mangled_suppression = Test::Valgrind::Suppressions->maybe_generalize( $session, $suppression, ); Removes all wildcard frames at the end of the suppression. -Moreover, C<'...'> is appended when C C<3.4.0> or higher is used. +It also replaces sequences of wildcard frames by C<'...'> when C C<3.4.0> or higher is used. Returns the mangled suppression. =cut -sub strip_tail { +sub maybe_generalize { shift; my ($sess, $supp) = @_; 1 while $supp =~ s/[^\r\n]*:\s*\*\s*$//; + # With valgrind 3.4.0, we can replace unknown series of frames by '...' if ($sess->version ge '3.4.0') { - 1 while $supp =~ s/[^\r\n]*\.{3}\s*$//; $supp .= "...\n"; + $supp =~ s/(?:^\s*(?:\.{3}|\*:\S*|obj:\*)\s*\n)+/...\n/mg; } $supp;