summaryrefslogtreecommitdiff
path: root/bridges/source/cpp_uno/cc50_solaris_intel/except.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/source/cpp_uno/cc50_solaris_intel/except.cxx')
-rw-r--r--bridges/source/cpp_uno/cc50_solaris_intel/except.cxx21
1 files changed, 4 insertions, 17 deletions
diff --git a/bridges/source/cpp_uno/cc50_solaris_intel/except.cxx b/bridges/source/cpp_uno/cc50_solaris_intel/except.cxx
index 6a9b923a4e26..061c3742df03 100644
--- a/bridges/source/cpp_uno/cc50_solaris_intel/except.cxx
+++ b/bridges/source/cpp_uno/cc50_solaris_intel/except.cxx
@@ -36,6 +36,7 @@
#include <list>
#include <map>
#include <rtl/alloc.h>
+#include <rtl/instance.hxx>
#include <osl/diagnose.h>
#include <rtl/strbuf.hxx>
@@ -313,6 +314,8 @@ void* RTTIHolder::generateRTTI( typelib_CompoundTypeDescription * pCompTypeDescr
return pRTTI;
}
+struct RTTISingleton: public rtl::Static< RTTIHolder, RTTISingleton > {};
+
//__________________________________________________________________________________________________
static void deleteException(
@@ -345,23 +348,7 @@ void cc50_solaris_intel_raiseException( uno_Any * pUnoExc, uno_Mapping * pUno2Cp
// will be released by deleteException
typelib_typedescriptionreference_getDescription( &pTypeDescr, pUnoExc->pType );
- void* pRTTI;
- {
- static ::osl::Mutex aMutex;
- ::osl::Guard< ::osl::Mutex > guard( aMutex );
-
- static RTTIHolder * s_pRTTI = 0;
- if (! s_pRTTI)
- {
-#ifdef LEAK_STATIC_DATA
- s_pRTTI = new RTTIHolder();
-#else
- static RTTIHolder s_aRTTI;
- s_pRTTI = &s_aRTTI;
-#endif
- }
-
- pRTTI = s_pRTTI->generateRTTI( (typelib_CompoundTypeDescription *)pTypeDescr );
+ pRTTI = RTTISingleton::get().generateRTTI( (typelib_CompoundTypeDescription *)pTypeDescr );
}
// a must be