summaryrefslogtreecommitdiff
path: root/cpp/src/IceUtil/Exception.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceUtil/Exception.cpp')
-rw-r--r--cpp/src/IceUtil/Exception.cpp31
1 files changed, 28 insertions, 3 deletions
diff --git a/cpp/src/IceUtil/Exception.cpp b/cpp/src/IceUtil/Exception.cpp
index 6c4cb6624ce..3ada15e03d7 100644
--- a/cpp/src/IceUtil/Exception.cpp
+++ b/cpp/src/IceUtil/Exception.cpp
@@ -8,7 +8,8 @@
// **********************************************************************
#include <IceUtil/Exception.h>
-#include <IceUtil/StaticMutex.h>
+#include <IceUtil/MutexPtrLock.h>
+#include <IceUtil/Mutex.h>
#include <IceUtil/StringUtil.h>
#include <ostream>
#include <cstdlib>
@@ -20,6 +21,31 @@
using namespace std;
+namespace
+{
+
+IceUtil::Mutex* globalMutex = 0;
+
+class Init
+{
+public:
+
+ Init()
+ {
+ globalMutex = new IceUtil::Mutex;
+ }
+
+ ~Init()
+ {
+ delete globalMutex;
+ globalMutex = 0;
+ }
+};
+
+Init init;
+
+}
+
namespace IceUtil
{
@@ -198,7 +224,7 @@ IceUtil::Exception::what() const throw()
{
try
{
- StaticMutex::Lock lock(globalMutex);
+ IceUtilInternal::MutexPtrLock<IceUtil::Mutex> lock(globalMutex);
{
if(_str.empty())
{
@@ -374,4 +400,3 @@ IceUtil::SyscallException::error() const
{
return _error;
}
-