rendered paste bodydiff --git a/apt-pkg/rpm/rpmversion.cc b/apt-pkg/rpm/rpmversion.ccindex 99ae0f5..67b65ce 100644--- a/apt-pkg/rpm/rpmversion.cc+++ b/apt-pkg/rpm/rpmversion.cc@@ -191,19 +191,26 @@ int rpmVersioningSystem::DoCmpVersionArch(const char *A,const char *Aend, bool rpmVersioningSystem::CheckDep(const char *PkgVer, int Op,const char *DepVer) {- int PkgFlags = RPMSENSE_EQUAL;- int DepFlags = 0;+ rpmsenseFlags PkgFlags = RPMSENSE_EQUAL;+ rpmsenseFlags DepFlags; bool invert = false; int rc;++ if (DepVer == NULL)+ return true; + if (PkgVer == NULL)+ {+ return false;+ } switch (Op & 0x0F) { case pkgCache::Dep::LessEq:- DepFlags = RPMSENSE_LESS|RPMSENSE_EQUAL;+ DepFlags = (rpmsenseFlags)(RPMSENSE_LESS|RPMSENSE_EQUAL); break; case pkgCache::Dep::GreaterEq:- DepFlags = RPMSENSE_GREATER|RPMSENSE_EQUAL;+ DepFlags = (rpmsenseFlags)(RPMSENSE_GREATER|RPMSENSE_EQUAL); break; case pkgCache::Dep::Less:@@ -227,15 +234,17 @@ bool rpmVersioningSystem::CheckDep(const char *PkgVer, DepFlags = RPMSENSE_ANY; break; }+ EVR_t lEVR = rpmEVRnew(PkgFlags, 0);+ EVR_t rEVR = rpmEVRnew(DepFlags, 0);+ int result; - rpmds pds = rpmdsSingle(RPMTAG_PROVIDENAME, "", PkgVer, (rpmsenseFlags) PkgFlags);- rpmds dds = rpmdsSingle(RPMTAG_REQUIRENAME, "", DepVer, (rpmsenseFlags) DepFlags);- rpmdsSetNoPromote(pds, _rpmds_nopromote);- rpmdsSetNoPromote(dds, _rpmds_nopromote);- rc = rpmdsCompare(pds, dds);- rpmdsFree(pds);- rpmdsFree(dds);- + rpmEVRparse(PkgVer, lEVR);+ rpmEVRparse(DepVer, rEVR);+ lEVR->Flags = PkgFlags;+ rEVR->Flags = DepFlags;+ rc = rpmEVRoverlap(lEVR, rEVR);+ rpmEVRfree(lEVR);+ rpmEVRfree(rEVR); return (!invert && rc) || (invert && !rc); }