aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Heinecke <[email protected]>2017-09-04 09:23:56 +0000
committerAndre Heinecke <[email protected]>2017-09-04 09:23:56 +0000
commit58d7bcead3394fa80c2a05d0d1e0fb4d9a1048b0 (patch)
treed8eabd6e9ed1c9f1391eabd260cbfe2f71e7cf37
parentcore: New context flag "auto-key-retrieve" (diff)
downloadgpgme-58d7bcead3394fa80c2a05d0d1e0fb4d9a1048b0.tar.gz
gpgme-58d7bcead3394fa80c2a05d0d1e0fb4d9a1048b0.zip
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.
-rw-r--r--NEWS5
-rw-r--r--lang/cpp/src/engineinfo.h23
2 files changed, 19 insertions, 9 deletions
diff --git a/NEWS b/NEWS
index 71d96001..aee3f100 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 b216de80..cd1b7a72 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