diff options
author | Benoit Foucher <benoit@zeroc.com> | 2012-02-21 16:29:02 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2012-02-23 11:57:32 +0100 |
commit | 7748f03ef59fe0cbb0fac6781c07297a59572625 (patch) | |
tree | cf3379181ac77c2a67ec6fbdc7fcb3313c22f958 /cpp/src/IceUtil/Time.cpp | |
parent | ICE-4747 - iceserviceinstall fails for SSL endpoint (diff) | |
download | ice-7748f03ef59fe0cbb0fac6781c07297a59572625.tar.bz2 ice-7748f03ef59fe0cbb0fac6781c07297a59572625.tar.xz ice-7748f03ef59fe0cbb0fac6781c07297a59572625.zip |
Fix to prevent overflows
Diffstat (limited to 'cpp/src/IceUtil/Time.cpp')
-rw-r--r-- | cpp/src/IceUtil/Time.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/cpp/src/IceUtil/Time.cpp b/cpp/src/IceUtil/Time.cpp index b42b49c2927..29820316070 100644 --- a/cpp/src/IceUtil/Time.cpp +++ b/cpp/src/IceUtil/Time.cpp @@ -20,7 +20,6 @@ #endif #ifdef __APPLE__ -# include <CoreServices/CoreServices.h> # include <mach/mach.h> # include <mach/mach_time.h> #endif @@ -68,14 +67,16 @@ InitializeFrequency frequencyInitializer; namespace { -mach_timebase_info_data_t initTimeBase = {0, 0}; +double machMultiplier = 1.0; class InitializeTime { public: InitializeTime() { + mach_timebase_info_data_t initTimeBase = { 0, 0 }; mach_timebase_info(&initTimeBase); + machMultiplier = static_cast<double>(initTimeBase.numer) / initTimeBase.denom / ICE_INT64(1000); } }; InitializeTime initializeTime; @@ -148,7 +149,7 @@ IceUtil::Time::now(Clock clock) } return Time(tv.tv_sec * ICE_INT64(1000000) + tv.tv_usec); #elif defined(__APPLE__) - return Time((mach_absolute_time() * initTimeBase.numer / initTimeBase.denom) / ICE_INT64(1000)); + return Time(mach_absolute_time() * machMultiplier); #else struct timespec ts; if(clock_gettime(CLOCK_MONOTONIC, &ts) < 0) |