summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/SliceChecksums.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/SliceChecksums.cpp')
-rw-r--r--cpp/src/Ice/SliceChecksums.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/cpp/src/Ice/SliceChecksums.cpp b/cpp/src/Ice/SliceChecksums.cpp
index fe6a6c992c2..72117c4bed3 100644
--- a/cpp/src/Ice/SliceChecksums.cpp
+++ b/cpp/src/Ice/SliceChecksums.cpp
@@ -8,20 +8,26 @@
// **********************************************************************
#include <Ice/SliceChecksums.h>
+#include <IceUtil/StaticMutex.h>
using namespace std;
using namespace Ice;
-namespace Ice
+static SliceChecksumDict _sliceChecksums;
+static IceUtil::StaticMutex _mutex = ICE_STATIC_MUTEX_INITIALIZER;
+
+SliceChecksumDict
+Ice::sliceChecksums()
{
-const SliceChecksumDict sliceChecksums;
+ IceUtil::StaticMutex::Lock lock(_mutex);
+ return _sliceChecksums;
}
IceInternal::SliceChecksumInit::SliceChecksumInit(const char* checksums[])
{
- SliceChecksumDict& m = const_cast<SliceChecksumDict&>(sliceChecksums);
+ IceUtil::StaticMutex::Lock lock(_mutex);
for(int i = 0; checksums[i] != 0; i += 2)
{
- m.insert(SliceChecksumDict::value_type(checksums[i], checksums[i + 1]));
+ _sliceChecksums.insert(SliceChecksumDict::value_type(checksums[i], checksums[i + 1]));
}
}