summaryrefslogtreecommitdiff
path: root/stoc/source/proxy_factory/proxyfac.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'stoc/source/proxy_factory/proxyfac.cxx')
-rw-r--r--stoc/source/proxy_factory/proxyfac.cxx33
1 files changed, 10 insertions, 23 deletions
diff --git a/stoc/source/proxy_factory/proxyfac.cxx b/stoc/source/proxy_factory/proxyfac.cxx
index 57b0f2a05418..b85ed4907b9c 100644
--- a/stoc/source/proxy_factory/proxyfac.cxx
+++ b/stoc/source/proxy_factory/proxyfac.cxx
@@ -93,29 +93,16 @@ UnoInterfaceReference FactoryImpl::binuno_queryInterface(
typelib_InterfaceTypeDescription * pTypeDescr )
{
// init queryInterface() td
- static typelib_TypeDescription * s_pQITD = nullptr;
- if (s_pQITD == nullptr)
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- if (s_pQITD == nullptr)
- {
- typelib_TypeDescription * pTXInterfaceDescr = nullptr;
- TYPELIB_DANGER_GET(
- &pTXInterfaceDescr,
- cppu::UnoType<XInterface>::get().getTypeLibType() );
- typelib_TypeDescription * pQITD = nullptr;
- typelib_typedescriptionreference_getDescription(
- &pQITD, reinterpret_cast< typelib_InterfaceTypeDescription * >(
- pTXInterfaceDescr )->ppAllMembers[ 0 ] );
- TYPELIB_DANGER_RELEASE( pTXInterfaceDescr );
- OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
- s_pQITD = pQITD;
- }
- }
- else
- {
- OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
- }
+ static typelib_TypeDescription* s_pQITD = []() {
+ typelib_TypeDescription* pTXInterfaceDescr = nullptr;
+ TYPELIB_DANGER_GET(&pTXInterfaceDescr, cppu::UnoType<XInterface>::get().getTypeLibType());
+ typelib_TypeDescription* pQITD = nullptr;
+ typelib_typedescriptionreference_getDescription(
+ &pQITD, reinterpret_cast<typelib_InterfaceTypeDescription*>(pTXInterfaceDescr)
+ ->ppAllMembers[0]);
+ TYPELIB_DANGER_RELEASE(pTXInterfaceDescr);
+ return pQITD;
+ }();
void * args[ 1 ];
args[ 0 ] = &reinterpret_cast< typelib_TypeDescription * >(