=head1 VERSION
-Version 1.11
+Version 1.17
=cut
-our $VERSION = '1.11';
+our $VERSION = '1.17';
=head1 DESCRIPTION
use Test::Valgrind::Suppressions;
-use base qw/Test::Valgrind::Parser::Text Test::Valgrind::Carp/;
+use base qw<Test::Valgrind::Parser::Text Test::Valgrind::Carp>;
=head1 METHODS
while (<$fh>) {
s/^\s*#\s//; # Strip comments
- next if /^==/; # Valgrind info line
- next if /valgrind/; # and /\Q$file\E/;
+ if (/^==/) { # Valgrind info line
+ if (/Signal 11 being dropped from thread/) {
+ # This might loop endlessly
+ return 1;
+ }
+ next;
+ }
s/^\s*//; # Strip leading spaces
s/<[^>]+>//; # Strip tags
if ($_ eq '{') { # A suppression block begins
$in = 1;
} elsif ($_ eq '}') { # A suppression block ends
- $s = Test::Valgrind::Suppressions->strip_tail($sess, $s); # Strip the tail
push @supps, $s; # Add the suppression that just ended to the list
$s = ''; # Reset the state
$in = 0;
} elsif ($in) { # We're inside a suppresion block
- $s .= "$_\n"; # Append the current line to the state
+ if (/^fun\s*:\s*(.*)/) {
+ # Sometimes valgrind seems to forget to Z-demangle the symbol names.
+ # Make sure it's done and append the result to the state.
+ my $sym = $1;
+ $s .= 'fun:' . Test::Valgrind::Suppressions->maybe_z_demangle($sym) . "\n";
+ } else {
+ $s .= "$_\n";
+ }
}
}
my %call; # Frames to append (if the value is 1) or to prepend (if it's 0)
if ($t eq 'm') { # malloc can also be called by calloc or realloc
- $call{$_} = 1 for qw/calloc realloc/;
+ $call{$_} = 1 for qw<calloc realloc>;
} elsif ($t eq 're') { # realloc can also call malloc or free
- $call{$_} = 0 for qw/malloc free/;
+ $call{$_} = 0 for qw<malloc free>;
} elsif ($t eq 'c') { # calloc can also call malloc
- $call{$_} = 0 for qw/malloc/;
+ $call{$_} = 0 for qw<malloc>;
}
my $c = $_;
kind => 'Suppression',
data => $_,
)) for @supps, @extra;
+
+ return 0;
}
=head1 SEE ALSO
=head1 COPYRIGHT & LICENSE
-Copyright 2009 Vincent Pit, all rights reserved.
+Copyright 2009,2010,2011,2013,2015 Vincent Pit, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
package Test::Valgrind::Report::Suppressions;
-use base qw/Test::Valgrind::Report/;
+use base qw<Test::Valgrind::Report>;
sub kinds { shift->SUPER::kinds(), 'Suppression' }