summaryrefslogtreecommitdiff
path: root/apt-pkg/deb/debversion.cc
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2013-04-01 13:19:43 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2013-04-01 13:19:43 +0200
commit40befb065d110c7b3a7b3d37759b6888522817b2 (patch)
tree91c211c54cfd0e2242ed5ac1ec3c65b7a0d87876 /apt-pkg/deb/debversion.cc
parent9c44383f2ea09afbf6ebab217cdc450e5170c172 (diff)
* apt-pkg/deb/debversion.cc:
- add a string-equal shortcut for equal version comparisions
Diffstat (limited to 'apt-pkg/deb/debversion.cc')
-rw-r--r--apt-pkg/deb/debversion.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/apt-pkg/deb/debversion.cc b/apt-pkg/deb/debversion.cc
index a02699a44..94d357846 100644
--- a/apt-pkg/deb/debversion.cc
+++ b/apt-pkg/deb/debversion.cc
@@ -215,10 +215,19 @@ bool debVersioningSystem::CheckDep(const char *PkgVer,
return true;
if (PkgVer == 0 || PkgVer[0] == 0)
return false;
-
+ Op &= 0x0F;
+
+ size_t const lenPkgVer = strlen(PkgVer);
+ size_t const lenDepVer = strlen(DepVer);
+
+ // take a shortcut for equals which are string-equal as well
+ if (Op == pkgCache::Dep::Equals && lenPkgVer == lenDepVer &&
+ memcmp(PkgVer, DepVer, lenPkgVer) == 0)
+ return true;
+
// Perform the actual comparision.
- int Res = CmpVersion(PkgVer,DepVer);
- switch (Op & 0x0F)
+ int const Res = DoCmpVersion(PkgVer, PkgVer + lenPkgVer, DepVer, DepVer + lenDepVer);
+ switch (Op)
{
case pkgCache::Dep::LessEq:
if (Res <= 0)