]> git.donarmstrong.com Git - debbugs.git/commitdiff
Merge branch 'master' into database
authorDon Armstrong <don@donarmstrong.com>
Tue, 24 Sep 2013 05:35:49 +0000 (22:35 -0700)
committerDon Armstrong <don@donarmstrong.com>
Tue, 24 Sep 2013 05:35:49 +0000 (22:35 -0700)
1  2 
Debbugs/Status.pm

diff --combined Debbugs/Status.pm
index ab35b814dae6f2c50797dc50c5d6fb069d3f8301,b28ff5355658e4a24dc17bc29bc06da172334e39..1dc6ef8a73e91c4de7470fcb1f831ef4c514b804
@@@ -191,7 -191,6 +191,7 @@@ sub read_bug
      my $status;
      my $log;
      my $location;
 +    my $report;
      if (not defined $param{summary}) {
         my $lref;
         ($lref,$location) = @param{qw(bug location)};
         }
         $status = getbugcomponent($lref, 'summary', $location);
         $log    = getbugcomponent($lref, 'log'    , $location);
 +       $report    = getbugcomponent($lref, 'report'    , $location);
         return undef unless defined $status;
         return undef if not -e $status;
      }
      else {
         $status = $param{summary};
         $log = $status;
 +       $report = $status;
         $log =~ s/\.summary$/.log/;
 +       $report =~ s/\.summary$/.report/;
         ($location) = $status =~ m/(db-h|db|archive)/;
           ($param{bug}) = $status =~ m/(\d+)\.summary$/;
      }
      my $status_modified = (stat($status))[9];
      # Add log last modified time
      $data{log_modified} = (stat($log))[9] // (stat("${log}.gz"))[9];
 +    my $report_modified = (stat($report))[9] // $data{log_modified};
      $data{last_modified} = max($status_modified,$data{log_modified});
 +    # if the date isn't set (ancient bug), use the smallest of any of the modified
 +    if (not defined $data{date} or not length($data{date})) {
 +        $data{date} = min($report_modified,$status_modified,$data{log_modified});
 +    }
      $data{location} = $location;
      $data{archived} = (defined($location) and ($location eq 'archive'))?1:0;
      $data{bug_num} = $param{bug};
@@@ -521,12 -512,14 +521,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).")";
            }
        }
      }