From fc3e876d57dfeacaea9a96f5395335be7537deb5 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Mon, 4 Apr 2011 17:29:51 -0600 Subject: [PATCH 1/3] avoid c++ static initialization order issues --- src/libCom/osi/epicsTime.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/libCom/osi/epicsTime.cpp b/src/libCom/osi/epicsTime.cpp index 70f282e21..ef6437ffa 100644 --- a/src/libCom/osi/epicsTime.cpp +++ b/src/libCom/osi/epicsTime.cpp @@ -74,8 +74,6 @@ public: bool useDiffTimeOptimization; }; -static const epicsTimeLoadTimeInit lti; - // // epicsTimeLoadTimeInit () // @@ -125,6 +123,9 @@ inline void epicsTime::addNanoSec (long nSecAdj) // epicsTime::epicsTime ( const time_t_wrapper & ansiTimeTicks ) { + // avoid c++ static initialization order issues + static epicsTimeLoadTimeInit & lti = * new epicsTimeLoadTimeInit (); + // // try to directly map time_t into an unsigned long integer because this is // faster on systems w/o hardware floating point and a simple integer type time_t. @@ -212,6 +213,8 @@ epicsTime epicsTime::getEvent (const epicsTimeEvent &event) // epicsTime::operator time_t_wrapper () const { + // avoid c++ static initialization order issues + static epicsTimeLoadTimeInit & lti = * new epicsTimeLoadTimeInit (); time_t_wrapper wrap; if ( lti.useDiffTimeOptimization ) { From 4b780b1011137848046d4021b52d0395855db9b9 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Mon, 4 Apr 2011 17:50:49 -0600 Subject: [PATCH 2/3] avoid c++ static initialization order issues --- src/libCom/osi/epicsTime.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/libCom/osi/epicsTime.cpp b/src/libCom/osi/epicsTime.cpp index ef6437ffa..70f282e21 100644 --- a/src/libCom/osi/epicsTime.cpp +++ b/src/libCom/osi/epicsTime.cpp @@ -74,6 +74,8 @@ public: bool useDiffTimeOptimization; }; +static const epicsTimeLoadTimeInit lti; + // // epicsTimeLoadTimeInit () // @@ -123,9 +125,6 @@ inline void epicsTime::addNanoSec (long nSecAdj) // epicsTime::epicsTime ( const time_t_wrapper & ansiTimeTicks ) { - // avoid c++ static initialization order issues - static epicsTimeLoadTimeInit & lti = * new epicsTimeLoadTimeInit (); - // // try to directly map time_t into an unsigned long integer because this is // faster on systems w/o hardware floating point and a simple integer type time_t. @@ -213,8 +212,6 @@ epicsTime epicsTime::getEvent (const epicsTimeEvent &event) // epicsTime::operator time_t_wrapper () const { - // avoid c++ static initialization order issues - static epicsTimeLoadTimeInit & lti = * new epicsTimeLoadTimeInit (); time_t_wrapper wrap; if ( lti.useDiffTimeOptimization ) { From 0dab03275196fb74feeb69ae89d444b2642d1170 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Tue, 5 Apr 2011 09:23:22 -0600 Subject: [PATCH 3/3] avoid c++ static initialization order issues --- src/libCom/osi/epicsTime.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/libCom/osi/epicsTime.cpp b/src/libCom/osi/epicsTime.cpp index 70f282e21..ef6437ffa 100644 --- a/src/libCom/osi/epicsTime.cpp +++ b/src/libCom/osi/epicsTime.cpp @@ -74,8 +74,6 @@ public: bool useDiffTimeOptimization; }; -static const epicsTimeLoadTimeInit lti; - // // epicsTimeLoadTimeInit () // @@ -125,6 +123,9 @@ inline void epicsTime::addNanoSec (long nSecAdj) // epicsTime::epicsTime ( const time_t_wrapper & ansiTimeTicks ) { + // avoid c++ static initialization order issues + static epicsTimeLoadTimeInit & lti = * new epicsTimeLoadTimeInit (); + // // try to directly map time_t into an unsigned long integer because this is // faster on systems w/o hardware floating point and a simple integer type time_t. @@ -212,6 +213,8 @@ epicsTime epicsTime::getEvent (const epicsTimeEvent &event) // epicsTime::operator time_t_wrapper () const { + // avoid c++ static initialization order issues + static epicsTimeLoadTimeInit & lti = * new epicsTimeLoadTimeInit (); time_t_wrapper wrap; if ( lti.useDiffTimeOptimization ) {