From: Marcus Holland-Moritz Date: Wed, 3 Sep 2003 19:20:20 +0000 (+0200) Subject: fix: output from different pids X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=110e9861451a03f252fceb782271c09d1527ec59;p=p5sagit%2Fp5-mst-13.2.git fix: output from different pids From: "Marcus Holland-Moritz" Message-ID: <005901c3723f$a7914f10$0c2f1fac@R2D2> p4raw-id: //depot/perl@21022 --- diff --git a/Porting/valgrindpp.pl b/Porting/valgrindpp.pl index 1e7c1f8..5078734 100644 --- a/Porting/valgrindpp.pl +++ b/Porting/valgrindpp.pl @@ -196,8 +196,16 @@ sub filter { debug(1, "processing $test ($_)\n"); # Get all the valgrind output lines - my @l = map { chomp; s/^==\d+==\s?//; $_ } - do { my $fh = new IO::File $_ or die "$0: cannot open $_ ($!)\n"; <$fh> }; + my @l = do { + my $fh = new IO::File $_ or die "$0: cannot open $_ ($!)\n"; + # Process outputs can interrupt each other, so sort by pid first + my %pid; local $_; + while (<$fh>) { + chomp; + s/^==(\d+)==\s?// and push @{$pid{$1}}, $_; + } + map @$_, values %pid; + }; # Setup some useful regexes my $hexaddr = '0x[[:xdigit:]]+';