[Pkg-gnupg-commit] [gpgme] 74/103: cpp: Fix version info comparison

Daniel Kahn Gillmor dkg at fifthhorseman.net
Thu Dec 14 18:53:06 UTC 2017


This is an automated email from the git hooks/post-receive script.

dkg pushed a commit to branch master
in repository gpgme.

commit 58d7bcead3394fa80c2a05d0d1e0fb4d9a1048b0
Author: Andre Heinecke <aheinecke at intevation.de>
Date:   Mon Sep 4 11:23:56 2017 +0200

    cpp: Fix version info comparison
    
    * lang/cpp/src/engineinfo.h (EngineInfo::Version::operator<):
    Fix logic.
    * lang/cpp/src/engineinfo.h (EngineInfo::Version::operator>):
    New.
    * NEWS: Mention added API
    
    --
    This fixes a logic error that 2.2.0 < 2.1.19 would return true.
---
 NEWS                      |  5 +++--
 lang/cpp/src/engineinfo.h | 23 ++++++++++++++++-------
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/NEWS b/NEWS
index 71d9600..aee3f10 100644
--- a/NEWS
+++ b/NEWS
@@ -12,8 +12,9 @@ Noteworthy changes in version 1.10.0 (unreleased)
  GPGME_DELETE_FORCE          NEW.
  gpgme_op_conf_dir           NEW.
  gpgme_set_ctx_flag          EXTENDED: New flag 'auto-key-retrieve'.
- cpp: DecryptionResult::isDeVs NEW.
- cpp: Signature::isDeVs        NEW.
+ cpp: DecryptionResult::isDeVs         NEW.
+ cpp: Signature::isDeVs                NEW.
+ cpp: EngineInfo::Version::operator>   NEW.
  py: DecryptResult           EXTENDED: New boolean field 'is_de_vs'.
  py: Signature               EXTENDED: New boolean field 'is_de_vs'.
  py: GpgError                EXTENDED: Partial results in 'results'.
diff --git a/lang/cpp/src/engineinfo.h b/lang/cpp/src/engineinfo.h
index b216de8..cd1b7a7 100644
--- a/lang/cpp/src/engineinfo.h
+++ b/lang/cpp/src/engineinfo.h
@@ -71,13 +71,13 @@ public:
 
         bool operator < (const Version& other)
         {
-            if (major < other.major)
-                return true;
-            if (minor < other.minor)
-                return true;
-            if (patch < other.patch)
-                return true;
-            return false;
+            if (major > other.major ||
+                (major == other.major && minor > other.minor) ||
+                (major == other.major && minor == other.minor && patch > other.patch) ||
+                (major >= other.major && minor >= other.minor && patch >= other.patch)) {
+                return false;
+            }
+            return true;
         }
 
         bool operator < (const char* other)
@@ -85,6 +85,15 @@ public:
             return operator<(Version(other));
         }
 
+        bool operator > (const char* other)
+        {
+            return !operator<(Version(other));
+        }
+
+        bool operator > (const Version & other)
+        {
+            return !operator<(other);
+        }
         bool operator == (const Version& other)
         {
             return major == other.major

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gpgme.git



More information about the Pkg-gnupg-commit mailing list