X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Debbugs%2FStatus.pm;h=6fe1c1a7a290544c479603f98f3d636fef2f6c59;hb=1a1fa6f0af2be9d4076d9aad5f5a84c5fb3d9a8a;hp=bf3d2ab7cdbdfa27d25b4d0b7eac3831445af3ef;hpb=ded1b3d0daf464ae240e9e088edc30986992537a;p=debbugs.git diff --git a/Debbugs/Status.pm b/Debbugs/Status.pm index bf3d2ab..6fe1c1a 100644 --- a/Debbugs/Status.pm +++ b/Debbugs/Status.pm @@ -34,7 +34,7 @@ use warnings; use strict; use vars qw($VERSION $DEBUG %EXPORT_TAGS @EXPORT_OK @EXPORT); -use base qw(Exporter); +use Exporter qw(import); use Params::Validate qw(validate_with :types); use Debbugs::Common qw(:util :lock :quit :misc); @@ -270,7 +270,7 @@ sub read_bug{ # create the found/fixed hashes which indicate when a # particular version was marked found or marked fixed. @{$data{$field}}{@{$data{"${field}_versions"}}} = - (('') x (@{$data{"${field}_date"}} - @{$data{"${field}_versions"}}), + (('') x (@{$data{"${field}_versions"}} - @{$data{"${field}_date"}}), @{$data{"${field}_date"}}); } @@ -307,6 +307,9 @@ my $ditch_empty_space = sub {return &{$ditch_empty}(' ',@_)}; my %split_fields = (package => \&splitpackages, affects => \&splitpackages, + # Ideally we won't have to split source, but because some consumers of + # get_bug_status cannot handle arrayref, we will split it here. + source => \&splitpackages, blocks => $ditch_empty_space, blockedby => $ditch_empty_space, # this isn't strictly correct, but we'll split both of them for @@ -416,7 +419,6 @@ data. =cut sub lockreadbugmerge { - my ($bug_num,$location) = @_; my $data = lockreadbug(@_); if (not defined $data) { return (0,undef); @@ -512,12 +514,14 @@ sub lock_read_all_merged_bugs { push @data,$newdata; # perform a sanity check to make sure that the merged bugs # are all merged with eachother - my $expectmerge= join(' ',grep {$_ != $bug } sort { $a <=> $b } @bugs); + # We do a cmp sort instead of an <=> sort here, because that's + # what merge does + my $expectmerge= join(' ',grep {$_ != $bug } sort @bugs); if ($newdata->{mergedwith} ne $expectmerge) { for (1..$locks) { unfilelock(exists $param{locks}?$param{locks}:()); } - die "Bug $param{bug} differs from bug $bug: ($newdata->{bug_num}: '$newdata->{mergedwith}') vs. ('$expectmerge') (".join(' ',@bugs).")"; + die "Bug $param{bug} mergedwith differs from bug $bug: ($newdata->{bug_num}: '$newdata->{mergedwith}') vs. ('$expectmerge') (".join(' ',@bugs).")"; } } } @@ -730,9 +734,9 @@ sub addfoundversions { my $version = shift; my $isbinary = shift; return unless defined $version; - undef $package if $package =~ m[(?:\s|/)]; + undef $package if defined $package and $package =~ m[(?:\s|/)]; my $source = $package; - if ($package =~ s/^src://) { + if (defined $package and $package =~ s/^src://) { $isbinary = 0; $source = $package; }