From: Don Armstrong Date: Tue, 12 Aug 2008 02:33:38 +0000 (-0700) Subject: fix another edge case in Debbugs::Versions::Dpkg X-Git-Tag: release/2.6.0~474^2~6 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=8a2fe5b796d5908395c6c974d6d23569ad2a448e;p=debbugs.git fix another edge case in Debbugs::Versions::Dpkg --- diff --git a/Debbugs/Versions/Dpkg.pm b/Debbugs/Versions/Dpkg.pm index af955f28..c6a3de28 100644 --- a/Debbugs/Versions/Dpkg.pm +++ b/Debbugs/Versions/Dpkg.pm @@ -43,7 +43,7 @@ sub parseversion ($) { $verhash{epoch} = 0; } - if ($ver =~ /(.+)-(.+)$/) + if ($ver =~ /(.+)-(.*)$/) { $verhash{version} = $1; $verhash{revision} = $2; @@ -74,7 +74,7 @@ sub verrevcmp($$) # : (x) + 256) # This comparison is out of dpkg's order to avoid # comparing things to undef and triggering warnings. - if (not defined $x) { + if (not defined $x or not length $x) { return 0; } elsif ($x eq '~') { @@ -125,7 +125,6 @@ sub verrevcmp($$) return 1 if defined $vc and $vc =~ /^\d$/; return -1 if defined $rc and $rc =~ /^\d$/; return (($first_diff > 0) ? 1 : -1) if $first_diff; - # return $first_diff if $first_diff; } return 0; } @@ -150,7 +149,7 @@ sub vercmp ($$) return verrevcmp($version{revision}, $refversion{revision}); } -=back + =back =head1 AUTHOR diff --git a/t/02_version_dpkg.t b/t/02_version_dpkg.t index e6134557..a5865a0e 100644 --- a/t/02_version_dpkg.t +++ b/t/02_version_dpkg.t @@ -40,6 +40,16 @@ my @versions = ({a => '1.0-1', result => -1, relation => 'lt', }, + {a => 'foo-', + b => 'foo', + result => 0, + relation => 'eq', + }, + {a => 'foo-', + b => 'foo+', + result => -1, + relation => 'lt', + }, ); plan tests => @versions * 2 + 1;