All pastes #2014854 Raw Edit

agrr

public text v1 · immutable
#2014854 ·published 2010-12-09 16:27 UTC
rendered paste body
diff --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); }