Raphael Hertzog <[EMAIL PROTECTED]> writes: > Package: lintian > Version: 1.23.34 > Severity: normal
> I worked on creating a Dpkg::Deps module for dpkg and used lib/Dep.pm as > inspiration for some parts. I think I discovered some errors in that > code while writing Dpkg::Deps. Hm, ideally it would be cool if lintian could use that down the road. I know I hurt my head when trying to expand that code to support OR and full version implication, and the fewer times that people have to write it, the better. > The problem are in pred_implies(). It returns 0 in some cases where it > should return undef. > if ($$q[2] eq '<=') { > if ($$p[2] eq '>>') { > return Dep::versions_gte($$p[3], $$q[3]) ? 0 : undef; > } elsif ($$p[2] eq '>=') { > return Dep::versions_gt($$p[3], $$q[3]) ? 0 : undef; > } else { > return Dep::versions_lte($$p[3], $$q[3]); > } > } > Here in the case p=['pkg', '<', '1.6'] and q=['pkg', '<=','1.5'] you > return 0 while you should return undef. The fix is to have this in the > else clause: > return Dep::versions_lte($$p[3], $$q[3]) ? 1 : undef; > However it also means that you would return "undef" if in the same case > $$p[2]='=' while you should return 0 because the implication is > obviously impossible. For this you need to add another elsif testing > specifically this case. Indeed. Thanks! This fix will be in the next release. -- Russ Allbery ([EMAIL PROTECTED]) <http://www.eyrie.org/~eagle/> -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]