From 7748f03ef59fe0cbb0fac6781c07297a59572625 Mon Sep 17 00:00:00 2001 From: Benoit Foucher Date: Tue, 21 Feb 2012 16:29:02 +0100 Subject: Fix to prevent overflows --- cpp/src/IceUtil/Time.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'cpp/src/IceUtil/Time.cpp') 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 # include # include #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(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) -- cgit v1.2.3