summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Initialize.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/Initialize.cpp')
-rw-r--r--cpp/src/Ice/Initialize.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/cpp/src/Ice/Initialize.cpp b/cpp/src/Ice/Initialize.cpp
index 64b8fd9ab29..dc98f7e775f 100644
--- a/cpp/src/Ice/Initialize.cpp
+++ b/cpp/src/Ice/Initialize.cpp
@@ -151,10 +151,21 @@ CommunicatorPtr
Ice::initializeWithProperties(int& argc, char* argv[], const PropertiesPtr& properties, Int version)
{
#ifndef ICE_IGNORE_VERSION
+ //
+ // Major and minor version numbers must match.
+ //
if(version != ICE_INT_VERSION)
{
throw VersionMismatchException(__FILE__, __LINE__);
}
+ //
+ // The caller's patch level cannot be greater than library's patch level. (Patch level changes are
+ // backward-compatible, but not forward-compatible.)
+ //
+ if(version % 100 > ICE_INT_VERSION % 100)
+ {
+ throw VersionMismatchException(__FILE__, __LINE__);
+ }
#endif
StringSeq args = argsToStringSeq(argc, argv);