diff options
Diffstat (limited to 'cpp/src/Ice/TraceUtil.cpp')
-rw-r--r-- | cpp/src/Ice/TraceUtil.cpp | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/cpp/src/Ice/TraceUtil.cpp b/cpp/src/Ice/TraceUtil.cpp index 537053f9759..f1845fa25d9 100644 --- a/cpp/src/Ice/TraceUtil.cpp +++ b/cpp/src/Ice/TraceUtil.cpp @@ -7,7 +7,8 @@ // // ********************************************************************** -#include <IceUtil/StaticMutex.h> +#include <IceUtil/Mutex.h> +#include <IceUtil/MutexPtrLock.h> #include <IceUtil/StringUtil.h> #include <Ice/TraceUtil.h> #include <Ice/Instance.h> @@ -354,13 +355,36 @@ printMessage(ostream& s, BasicStream& stream) return type; } -static IceUtil::StaticMutex slicingMutex = ICE_STATIC_MUTEX_INITIALIZER; -static set<string> slicingIds; +namespace +{ + +IceUtil::Mutex* slicingMutex = 0; + +class Init +{ +public: + + Init() + { + slicingMutex = new IceUtil::Mutex; + } + + ~Init() + { + delete slicingMutex; + slicingMutex = 0; + } +}; + +Init init; + +} void IceInternal::traceSlicing(const char* kind, const string& typeId, const char* slicingCat, const LoggerPtr& logger) { - IceUtil::StaticMutex::Lock lock(slicingMutex); + IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(slicingMutex); + static set<string> slicingIds; if(slicingIds.insert(typeId).second) { string s("unknown "); |