summaryrefslogtreecommitdiffstats
path: root/cppu
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2020-04-17 15:42:46 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-04-18 09:56:28 +0200
commitc12a5e83802699615d4226c83c2e6f135a3485b4 (patch)
tree65c9f27a8dcc68d8ddaa17fd7db674c97f47dd08 /cppu
parentMove implementation of CELL("format";...) to SvNumberFormatter, tdf#132106 prep (diff)
downloadcore-c12a5e83802699615d4226c83c2e6f135a3485b4.tar.gz
core-c12a5e83802699615d4226c83c2e6f135a3485b4.zip
loplugin:flatten in cppu
Change-Id: I202698a0310bd26b98c1f744c8f21288f87643f9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92450 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'cppu')
-rw-r--r--cppu/source/threadpool/current.cxx30
-rw-r--r--cppu/source/typelib/static_types.cxx324
-rw-r--r--cppu/source/typelib/typelib.cxx382
-rw-r--r--cppu/source/uno/lbenv.cxx38
-rw-r--r--cppu/source/uno/lbmap.cxx44
5 files changed, 409 insertions, 409 deletions
diff --git a/cppu/source/threadpool/current.cxx b/cppu/source/threadpool/current.cxx
index 665f1b7c636e..7dbfc9050488 100644
--- a/cppu/source/threadpool/current.cxx
+++ b/cppu/source/threadpool/current.cxx
@@ -126,23 +126,23 @@ extern "C" {
static void delete_IdContainer( void * p )
{
- if (p)
+ if (!p)
+ return;
+
+ IdContainer * pId = static_cast< IdContainer * >( p );
+ if (pId->pCurrentContext)
{
- IdContainer * pId = static_cast< IdContainer * >( p );
- if (pId->pCurrentContext)
- {
- (*pId->pCurrentContextEnv->releaseInterface)(
- pId->pCurrentContextEnv, pId->pCurrentContext );
- (*pId->pCurrentContextEnv->aBase.release)(
- &pId->pCurrentContextEnv->aBase );
- }
- if (pId->bInit)
- {
- ::rtl_byte_sequence_release( pId->pLocalThreadId );
- ::rtl_byte_sequence_release( pId->pCurrentId );
- }
- delete pId;
+ (*pId->pCurrentContextEnv->releaseInterface)(
+ pId->pCurrentContextEnv, pId->pCurrentContext );
+ (*pId->pCurrentContextEnv->aBase.release)(
+ &pId->pCurrentContextEnv->aBase );
+ }
+ if (pId->bInit)
+ {
+ ::rtl_byte_sequence_release( pId->pLocalThreadId );
+ ::rtl_byte_sequence_release( pId->pCurrentId );
}
+ delete pId;
}
}
diff --git a/cppu/source/typelib/static_types.cxx b/cppu/source/typelib/static_types.cxx
index 77f443a6a637..6ff99b1f4ae0 100644
--- a/cppu/source/typelib/static_types.cxx
+++ b/cppu/source/typelib/static_types.cxx
@@ -297,30 +297,30 @@ void SAL_CALL typelib_static_sequence_type_init(
typelib_TypeDescriptionReference * pElementType )
SAL_THROW_EXTERN_C()
{
- if (! *ppRef)
- {
- MutexGuard aGuard( typelib_StaticInitMutex::get() );
- if (! *ppRef)
- {
- OUString aTypeName = "[]" + OUString::unacquired(&pElementType->pTypeName);
+ if ( *ppRef)
+ return;
- static_assert( ! TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK(typelib_TypeClass_SEQUENCE) );
- *ppRef = igetTypeByName( aTypeName.pData );
- if (!*ppRef)
- {
- typelib_TypeDescription * pReg = nullptr;
- ::typelib_typedescription_new(
- &pReg, typelib_TypeClass_SEQUENCE,
- aTypeName.pData, pElementType, 0, nullptr );
-
- ::typelib_typedescription_register( &pReg );
- *ppRef = reinterpret_cast<typelib_TypeDescriptionReference *>(pReg);
- assert( *ppRef == pReg->pWeakRef );
- }
- // another static ref:
- ++((*ppRef)->nStaticRefCount);
- }
+ MutexGuard aGuard( typelib_StaticInitMutex::get() );
+ if ( *ppRef)
+ return;
+
+ OUString aTypeName = "[]" + OUString::unacquired(&pElementType->pTypeName);
+
+ static_assert( ! TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK(typelib_TypeClass_SEQUENCE) );
+ *ppRef = igetTypeByName( aTypeName.pData );
+ if (!*ppRef)
+ {
+ typelib_TypeDescription * pReg = nullptr;
+ ::typelib_typedescription_new(
+ &pReg, typelib_TypeClass_SEQUENCE,
+ aTypeName.pData, pElementType, 0, nullptr );
+
+ ::typelib_typedescription_register( &pReg );
+ *ppRef = reinterpret_cast<typelib_TypeDescriptionReference *>(pReg);
+ assert( *ppRef == pReg->pWeakRef );
}
+ // another static ref:
+ ++((*ppRef)->nStaticRefCount);
}
@@ -335,76 +335,76 @@ void init(
{
assert( eTypeClass == typelib_TypeClass_STRUCT || eTypeClass == typelib_TypeClass_EXCEPTION );
- if (! *ppRef)
- {
- MutexGuard aGuard( typelib_StaticInitMutex::get() );
- if (! *ppRef)
- {
- assert( ! TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK(eTypeClass) );
- OUString aTypeName( OUString::createFromAscii( pTypeName ) );
- *ppRef = igetTypeByName( aTypeName.pData );
- if (!*ppRef)
- {
- typelib_CompoundTypeDescription * pComp = nullptr;
- ::typelib_typedescription_newEmpty(
- reinterpret_cast<typelib_TypeDescription **>(&pComp), eTypeClass, aTypeName.pData );
+ if ( *ppRef)
+ return;
- sal_Int32 nOffset = 0;
- if (pBaseType)
- {
- ::typelib_typedescriptionreference_getDescription(
- reinterpret_cast<typelib_TypeDescription **>(&pComp->pBaseTypeDescription), pBaseType );
- assert( pComp->pBaseTypeDescription );
- nOffset = pComp->pBaseTypeDescription->aBase.nSize;
- assert( newAlignedSize( 0, pComp->pBaseTypeDescription->aBase.nSize, pComp->pBaseTypeDescription->aBase.nAlignment ) == pComp->pBaseTypeDescription->aBase.nSize ); // unexpected offset
- }
+ MutexGuard aGuard( typelib_StaticInitMutex::get() );
+ if ( *ppRef)
+ return;
- if (nMembers)
- {
- pComp->nMembers = nMembers;
- pComp->pMemberOffsets = new sal_Int32[ nMembers ];
- pComp->ppTypeRefs = new typelib_TypeDescriptionReference *[ nMembers ];
- if (pParameterizedTypes != nullptr) {
- reinterpret_cast< typelib_StructTypeDescription * >(
- pComp)->pParameterizedTypes
- = new sal_Bool[nMembers];
- }
- for ( sal_Int32 i = 0 ; i < nMembers; ++i )
- {
- pComp->ppTypeRefs[i] = ppMembers[i];
- ::typelib_typedescriptionreference_acquire(
- pComp->ppTypeRefs[i] );
- // write offset
- typelib_TypeDescription * pTD = nullptr;
- TYPELIB_DANGER_GET( &pTD, pComp->ppTypeRefs[i] );
- assert( pTD->nSize ); // void member?
- nOffset = newAlignedSize( nOffset, pTD->nSize, pTD->nAlignment );
- pComp->pMemberOffsets[i] = nOffset - pTD->nSize;
- TYPELIB_DANGER_RELEASE( pTD );
-
- if (pParameterizedTypes != nullptr) {
- reinterpret_cast< typelib_StructTypeDescription * >(
- pComp)->pParameterizedTypes[i]
- = pParameterizedTypes[i];
- }
- }
- }
+ assert( ! TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK(eTypeClass) );
+ OUString aTypeName( OUString::createFromAscii( pTypeName ) );
+ *ppRef = igetTypeByName( aTypeName.pData );
+ if (!*ppRef)
+ {
+ typelib_CompoundTypeDescription * pComp = nullptr;
+ ::typelib_typedescription_newEmpty(
+ reinterpret_cast<typelib_TypeDescription **>(&pComp), eTypeClass, aTypeName.pData );
- typelib_TypeDescription * pReg = &pComp->aBase;
- pReg->pWeakRef = reinterpret_cast<typelib_TypeDescriptionReference *>(pReg);
- // sizeof(void) not allowed
- pReg->nSize = ::typelib_typedescription_getAlignedUnoSize( pReg, 0, pReg->nAlignment );
- pReg->nAlignment = adjustAlignment( pReg->nAlignment );
- pReg->bComplete = false;
+ sal_Int32 nOffset = 0;
+ if (pBaseType)
+ {
+ ::typelib_typedescriptionreference_getDescription(
+ reinterpret_cast<typelib_TypeDescription **>(&pComp->pBaseTypeDescription), pBaseType );
+ assert( pComp->pBaseTypeDescription );
+ nOffset = pComp->pBaseTypeDescription->aBase.nSize;
+ assert( newAlignedSize( 0, pComp->pBaseTypeDescription->aBase.nSize, pComp->pBaseTypeDescription->aBase.nAlignment ) == pComp->pBaseTypeDescription->aBase.nSize ); // unexpected offset
+ }
- ::typelib_typedescription_register( &pReg );
- *ppRef = reinterpret_cast<typelib_TypeDescriptionReference *>(pReg);
- assert( *ppRef == pReg->pWeakRef );
+ if (nMembers)
+ {
+ pComp->nMembers = nMembers;
+ pComp->pMemberOffsets = new sal_Int32[ nMembers ];
+ pComp->ppTypeRefs = new typelib_TypeDescriptionReference *[ nMembers ];
+ if (pParameterizedTypes != nullptr) {
+ reinterpret_cast< typelib_StructTypeDescription * >(
+ pComp)->pParameterizedTypes
+ = new sal_Bool[nMembers];
+ }
+ for ( sal_Int32 i = 0 ; i < nMembers; ++i )
+ {
+ pComp->ppTypeRefs[i] = ppMembers[i];
+ ::typelib_typedescriptionreference_acquire(
+ pComp->ppTypeRefs[i] );
+ // write offset
+ typelib_TypeDescription * pTD = nullptr;
+ TYPELIB_DANGER_GET( &pTD, pComp->ppTypeRefs[i] );
+ assert( pTD->nSize ); // void member?
+ nOffset = newAlignedSize( nOffset, pTD->nSize, pTD->nAlignment );
+ pComp->pMemberOffsets[i] = nOffset - pTD->nSize;
+ TYPELIB_DANGER_RELEASE( pTD );
+
+ if (pParameterizedTypes != nullptr) {
+ reinterpret_cast< typelib_StructTypeDescription * >(
+ pComp)->pParameterizedTypes[i]
+ = pParameterizedTypes[i];
+ }
}
- // another static ref:
- ++((*ppRef)->nStaticRefCount);
}
+
+ typelib_TypeDescription * pReg = &pComp->aBase;
+ pReg->pWeakRef = reinterpret_cast<typelib_TypeDescriptionReference *>(pReg);
+ // sizeof(void) not allowed
+ pReg->nSize = ::typelib_typedescription_getAlignedUnoSize( pReg, 0, pReg->nAlignment );
+ pReg->nAlignment = adjustAlignment( pReg->nAlignment );
+ pReg->bComplete = false;
+
+ ::typelib_typedescription_register( &pReg );
+ *ppRef = reinterpret_cast<typelib_TypeDescriptionReference *>(pReg);
+ assert( *ppRef == pReg->pWeakRef );
}
+ // another static ref:
+ ++((*ppRef)->nStaticRefCount);
}
}
@@ -449,60 +449,60 @@ void SAL_CALL typelib_static_mi_interface_type_init(
typelib_TypeDescriptionReference ** ppBaseTypes )
SAL_THROW_EXTERN_C()
{
- if (! *ppRef)
+ if ( *ppRef)
+ return;
+
+ MutexGuard aGuard( typelib_StaticInitMutex::get() );
+ if ( *ppRef)
+ return;
+
+ static_assert( ! TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK(typelib_TypeClass_INTERFACE) );
+ OUString aTypeName( OUString::createFromAscii( pTypeName ) );
+ *ppRef = igetTypeByName( aTypeName.pData );
+ if (!*ppRef)
{
- MutexGuard aGuard( typelib_StaticInitMutex::get() );
- if (! *ppRef)
+ typelib_InterfaceTypeDescription * pIface = nullptr;
+ ::typelib_typedescription_newEmpty(
+ reinterpret_cast<typelib_TypeDescription **>(&pIface), typelib_TypeClass_INTERFACE, aTypeName.pData );
+
+ pIface->nBaseTypes = std::max< sal_Int32 >(nBaseTypes, 1);
+ pIface->ppBaseTypes = new typelib_InterfaceTypeDescription *[
+ pIface->nBaseTypes];
+ if (nBaseTypes > 0)
{
- static_assert( ! TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK(typelib_TypeClass_INTERFACE) );
- OUString aTypeName( OUString::createFromAscii( pTypeName ) );
- *ppRef = igetTypeByName( aTypeName.pData );
- if (!*ppRef)
- {
- typelib_InterfaceTypeDescription * pIface = nullptr;
- ::typelib_typedescription_newEmpty(
- reinterpret_cast<typelib_TypeDescription **>(&pIface), typelib_TypeClass_INTERFACE, aTypeName.pData );
-
- pIface->nBaseTypes = std::max< sal_Int32 >(nBaseTypes, 1);
- pIface->ppBaseTypes = new typelib_InterfaceTypeDescription *[
- pIface->nBaseTypes];
- if (nBaseTypes > 0)
- {
- for (sal_Int32 i = 0; i < nBaseTypes; ++i) {
- pIface->ppBaseTypes[i] = nullptr;
- ::typelib_typedescriptionreference_getDescription(
- reinterpret_cast<typelib_TypeDescription **>(&pIface->ppBaseTypes[i]), ppBaseTypes[i] );
- assert( pIface->ppBaseTypes[i] );
- }
- }
- else
- {
- pIface->ppBaseTypes[0] = nullptr;
- ::typelib_typedescriptionreference_getDescription(
- reinterpret_cast<typelib_TypeDescription **>(&pIface->ppBaseTypes[0]),
- * ::typelib_static_type_getByTypeClass( typelib_TypeClass_INTERFACE ) );
- assert( pIface->ppBaseTypes[0] );
- }
- pIface->pBaseTypeDescription = pIface->ppBaseTypes[0];
- typelib_typedescription_acquire(
- &pIface->pBaseTypeDescription->aBase);
+ for (sal_Int32 i = 0; i < nBaseTypes; ++i) {
+ pIface->ppBaseTypes[i] = nullptr;
+ ::typelib_typedescriptionreference_getDescription(
+ reinterpret_cast<typelib_TypeDescription **>(&pIface->ppBaseTypes[i]), ppBaseTypes[i] );
+ assert( pIface->ppBaseTypes[i] );
+ }
+ }
+ else
+ {
+ pIface->ppBaseTypes[0] = nullptr;
+ ::typelib_typedescriptionreference_getDescription(
+ reinterpret_cast<typelib_TypeDescription **>(&pIface->ppBaseTypes[0]),
+ * ::typelib_static_type_getByTypeClass( typelib_TypeClass_INTERFACE ) );
+ assert( pIface->ppBaseTypes[0] );
+ }
+ pIface->pBaseTypeDescription = pIface->ppBaseTypes[0];
+ typelib_typedescription_acquire(
+ &pIface->pBaseTypeDescription->aBase);
- typelib_TypeDescription * pReg = &pIface->aBase;
- pReg->pWeakRef = reinterpret_cast<typelib_TypeDescriptionReference *>(pReg);
- // sizeof(void) not allowed
- pReg->nSize = ::typelib_typedescription_getAlignedUnoSize( pReg, 0, pReg->nAlignment );
+ typelib_TypeDescription * pReg = &pIface->aBase;
+ pReg->pWeakRef = reinterpret_cast<typelib_TypeDescriptionReference *>(pReg);
+ // sizeof(void) not allowed
+ pReg->nSize = ::typelib_typedescription_getAlignedUnoSize( pReg, 0, pReg->nAlignment );
- pReg->nAlignment = adjustAlignment( pReg->nAlignment );
- pReg->bComplete = false;
+ pReg->nAlignment = adjustAlignment( pReg->nAlignment );
+ pReg->bComplete = false;
- ::typelib_typedescription_register( &pReg );
- *ppRef = reinterpret_cast<typelib_TypeDescriptionReference *>(pReg);
- assert( *ppRef == pReg->pWeakRef );
- }
- // another static ref:
- ++((*ppRef)->nStaticRefCount);
- }
+ ::typelib_typedescription_register( &pReg );
+ *ppRef = reinterpret_cast<typelib_TypeDescriptionReference *>(pReg);
+ assert( *ppRef == pReg->pWeakRef );
}
+ // another static ref:
+ ++((*ppRef)->nStaticRefCount);
}
@@ -512,37 +512,37 @@ void SAL_CALL typelib_static_enum_type_init(
sal_Int32 nDefaultValue )
SAL_THROW_EXTERN_C()
{
- if (! *ppRef)
+ if ( *ppRef)
+ return;
+
+ MutexGuard aGuard( typelib_StaticInitMutex::get() );
+ if ( *ppRef)
+ return;
+
+ static_assert( ! TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK(typelib_TypeClass_ENUM) );
+ OUString aTypeName( OUString::createFromAscii( pTypeName ) );
+ *ppRef = igetTypeByName( aTypeName.pData );
+ if (!*ppRef)
{
- MutexGuard aGuard( typelib_StaticInitMutex::get() );
- if (! *ppRef)
- {
- static_assert( ! TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK(typelib_TypeClass_ENUM) );
- OUString aTypeName( OUString::createFromAscii( pTypeName ) );
- *ppRef = igetTypeByName( aTypeName.pData );
- if (!*ppRef)
- {
- typelib_TypeDescription * pReg = nullptr;
- ::typelib_typedescription_newEmpty(
- &pReg, typelib_TypeClass_ENUM, aTypeName.pData );
- typelib_EnumTypeDescription * pEnum = reinterpret_cast<typelib_EnumTypeDescription *>(pReg);
-
- pEnum->nDefaultEnumValue = nDefaultValue;
-
- pReg->pWeakRef = reinterpret_cast<typelib_TypeDescriptionReference *>(pReg);
- // sizeof(void) not allowed
- pReg->nSize = ::typelib_typedescription_getAlignedUnoSize( pReg, 0, pReg->nAlignment );
- pReg->nAlignment = ::adjustAlignment( pReg->nAlignment );
- pReg->bComplete = false;
-
- ::typelib_typedescription_register( &pReg );
- *ppRef = reinterpret_cast<typelib_TypeDescriptionReference *>(pReg);
- assert( *ppRef == pReg->pWeakRef );
- }
- // another static ref:
- ++((*ppRef)->nStaticRefCount);
- }
+ typelib_TypeDescription * pReg = nullptr;
+ ::typelib_typedescription_newEmpty(
+ &pReg, typelib_TypeClass_ENUM, aTypeName.pData );
+ typelib_EnumTypeDescription * pEnum = reinterpret_cast<typelib_EnumTypeDescription *>(pReg);
+
+ pEnum->nDefaultEnumValue = nDefaultValue;
+
+ pReg->pWeakRef = reinterpret_cast<typelib_TypeDescriptionReference *>(pReg);
+ // sizeof(void) not allowed
+ pReg->nSize = ::typelib_typedescription_getAlignedUnoSize( pReg, 0, pReg->nAlignment );
+ pReg->nAlignment = ::adjustAlignment( pReg->nAlignment );
+ pReg->bComplete = false;
+
+ ::typelib_typedescription_register( &pReg );
+ *ppRef = reinterpret_cast<typelib_TypeDescriptionReference *>(pReg);
+ assert( *ppRef == pReg->pWeakRef );
}
+ // another static ref:
+ ++((*ppRef)->nStaticRefCount);
}
} // extern "C"
diff --git a/cppu/source/typelib/typelib.cxx b/cppu/source/typelib/typelib.cxx
index 92a7e6ca5120..339f470077af 100644
--- a/cppu/source/typelib/typelib.cxx
+++ b/cppu/source/typelib/typelib.cxx
@@ -362,42 +362,42 @@ static void typelib_typedescription_initTables(
}
MutexGuard aGuard( Init::get().getMutex() );
- if( !pTD->bComplete )
+ if( pTD->bComplete )
+ return;
+
+ // create the index table from member to function table
+ pITD->pMapMemberIndexToFunctionIndex = new sal_Int32[ pITD->nAllMembers ];
+ sal_Int32 nAdditionalOffset = 0; // +1 for read/write attributes
+ sal_Int32 i;
+ for( i = 0; i < pITD->nAllMembers; i++ )
{
- // create the index table from member to function table
- pITD->pMapMemberIndexToFunctionIndex = new sal_Int32[ pITD->nAllMembers ];
- sal_Int32 nAdditionalOffset = 0; // +1 for read/write attributes
- sal_Int32 i;
- for( i = 0; i < pITD->nAllMembers; i++ )
+ // index to the get method of the attribute
+ pITD->pMapMemberIndexToFunctionIndex[i] = i + nAdditionalOffset;
+ // extra offset if it is a read/write attribute?
+ if (aReadWriteAttributes[i])
{
- // index to the get method of the attribute
- pITD->pMapMemberIndexToFunctionIndex[i] = i + nAdditionalOffset;
- // extra offset if it is a read/write attribute?
- if (aReadWriteAttributes[i])
- {
- // a read/write attribute
- nAdditionalOffset++;
- }
+ // a read/write attribute
+ nAdditionalOffset++;
}
+ }
- // create the index table from function to member table
- pITD->pMapFunctionIndexToMemberIndex = new sal_Int32[ pITD->nAllMembers + nAdditionalOffset ];
- nAdditionalOffset = 0; // +1 for read/write attributes
- for( i = 0; i < pITD->nAllMembers; i++ )
+ // create the index table from function to member table
+ pITD->pMapFunctionIndexToMemberIndex = new sal_Int32[ pITD->nAllMembers + nAdditionalOffset ];
+ nAdditionalOffset = 0; // +1 for read/write attributes
+ for( i = 0; i < pITD->nAllMembers; i++ )
+ {
+ // index to the get method of the attribute
+ pITD->pMapFunctionIndexToMemberIndex[i + nAdditionalOffset] = i;
+ // extra offset if it is a read/write attribute?
+ if (aReadWriteAttributes[i])
{
- // index to the get method of the attribute
- pITD->pMapFunctionIndexToMemberIndex[i + nAdditionalOffset] = i;
- // extra offset if it is a read/write attribute?
- if (aReadWriteAttributes[i])
- {
- // a read/write attribute
- pITD->pMapFunctionIndexToMemberIndex[i + ++nAdditionalOffset] = i;
- }
+ // a read/write attribute
+ pITD->pMapFunctionIndexToMemberIndex[i + ++nAdditionalOffset] = i;
}
- // must be the last action after all initialization is done
- pITD->nMapFunctionIndexToMemberIndex = pITD->nAllMembers + nAdditionalOffset;
- pTD->bComplete = true;
}
+ // must be the last action after all initialization is done
+ pITD->nMapFunctionIndexToMemberIndex = pITD->nAllMembers + nAdditionalOffset;
+ pTD->bComplete = true;
}
namespace {
@@ -1363,68 +1363,68 @@ extern "C" void SAL_CALL typelib_typedescription_release(
{
sal_Int32 ref = osl_atomic_decrement( &pTD->nRefCount );
OSL_ASSERT(ref >= 0);
- if (0 == ref)
+ if (0 != ref)
+ return;
+
+ TypeDescriptor_Init_Impl &rInit = Init::get();
+ if( TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK( pTD->eTypeClass ) )
{
- TypeDescriptor_Init_Impl &rInit = Init::get();
- if( TYPELIB_TYPEDESCRIPTIONREFERENCE_ISREALLYWEAK( pTD->eTypeClass ) )
+ if( pTD->pWeakRef )
{
- if( pTD->pWeakRef )
{
- {
- MutexGuard aGuard( rInit.getMutex() );
- // remove this description from the weak reference
- pTD->pWeakRef->pType = nullptr;
- }
- typelib_typedescriptionreference_release( pTD->pWeakRef );
+ MutexGuard aGuard( rInit.getMutex() );
+ // remove this description from the weak reference
+ pTD->pWeakRef->pType = nullptr;
}
+ typelib_typedescriptionreference_release( pTD->pWeakRef );
}
- else
+ }
+ else
+ {
+ // this description is a reference too, so remove it from the hash table
+ if( rInit.pWeakMap )
{
- // this description is a reference too, so remove it from the hash table
- if( rInit.pWeakMap )
+ MutexGuard aGuard( rInit.getMutex() );
+ WeakMap_Impl::iterator aIt = rInit.pWeakMap->find( pTD->pTypeName->buffer );
+ if( aIt != rInit.pWeakMap->end() && static_cast<void *>((*aIt).second) == static_cast<void *>(pTD) )
{
- MutexGuard aGuard( rInit.getMutex() );
- WeakMap_Impl::iterator aIt = rInit.pWeakMap->find( pTD->pTypeName->buffer );
- if( aIt != rInit.pWeakMap->end() && static_cast<void *>((*aIt).second) == static_cast<void *>(pTD) )
- {
- // remove only if it contains the same object
- rInit.pWeakMap->erase( aIt );
- }
+ // remove only if it contains the same object
+ rInit.pWeakMap->erase( aIt );
}
}
+ }
- typelib_typedescription_destructExtendedMembers( pTD );
- rtl_uString_release( pTD->pTypeName );
+ typelib_typedescription_destructExtendedMembers( pTD );
+ rtl_uString_release( pTD->pTypeName );
#if OSL_DEBUG_LEVEL > 0
- switch( pTD->eTypeClass )
- {
- case typelib_TypeClass_SEQUENCE:
- osl_atomic_decrement( &rInit.nIndirectTypeDescriptionCount );
- break;
- case typelib_TypeClass_STRUCT:
- case typelib_TypeClass_EXCEPTION:
- osl_atomic_decrement( &rInit.nCompoundTypeDescriptionCount );
- break;
- case typelib_TypeClass_INTERFACE:
- osl_atomic_decrement( &rInit.nInterfaceTypeDescriptionCount );
- break;
- case typelib_TypeClass_INTERFACE_METHOD:
- osl_atomic_decrement( &rInit.nInterfaceMethodTypeDescriptionCount );
- break;
- case typelib_TypeClass_INTERFACE_ATTRIBUTE:
- osl_atomic_decrement( &rInit.nInterfaceAttributeTypeDescriptionCount );
- break;
- case typelib_TypeClass_ENUM:
- osl_atomic_decrement( &rInit.nEnumTypeDescriptionCount );
- break;
- default:
- osl_atomic_decrement( &rInit.nTypeDescriptionCount );
- }
+ switch( pTD->eTypeClass )
+ {
+ case typelib_TypeClass_SEQUENCE:
+ osl_atomic_decrement( &rInit.nIndirectTypeDescriptionCount );
+ break;
+ case typelib_TypeClass_STRUCT:
+ case typelib_TypeClass_EXCEPTION:
+ osl_atomic_decrement( &rInit.nCompoundTypeDescriptionCount );
+ break;
+ case typelib_TypeClass_INTERFACE:
+ osl_atomic_decrement( &rInit.nInterfaceTypeDescriptionCount );
+ break;
+ case typelib_TypeClass_INTERFACE_METHOD:
+ osl_atomic_decrement( &rInit.nInterfaceMethodTypeDescriptionCount );
+ break;
+ case typelib_TypeClass_INTERFACE_ATTRIBUTE:
+ osl_atomic_decrement( &rInit.nInterfaceAttributeTypeDescriptionCount );
+ break;
+ case typelib_TypeClass_ENUM:
+ osl_atomic_decrement( &rInit.nEnumTypeDescriptionCount );
+ break;
+ default:
+ osl_atomic_decrement( &rInit.nTypeDescriptionCount );
+ }
#endif
- freeTypeDescription(pTD);
- }
+ freeTypeDescription(pTD);
}
@@ -1899,103 +1899,103 @@ extern "C" void SAL_CALL typelib_typedescription_getByName(
typelib_typedescriptionreference_release( pTDR );
}
- if (nullptr == *ppRet)
+ if (nullptr != *ppRet)
+ return;
+
+ // check for sequence
+ OUString const & name = OUString::unacquired( &pName );
+ if (2 < name.getLength() && '[' == name[ 0 ])
{
- // check for sequence
- OUString const & name = OUString::unacquired( &pName );
- if (2 < name.getLength() && '[' == name[ 0 ])
+ OUString element_name( name.copy( 2 ) );
+ typelib_TypeDescription * element_td = nullptr;
+ typelib_typedescription_getByName( &element_td, element_name.pData );
+ if (nullptr != element_td)
{
- OUString element_name( name.copy( 2 ) );
- typelib_TypeDescription * element_td = nullptr;
- typelib_typedescription_getByName( &element_td, element_name.pData );
- if (nullptr != element_td)
- {
- typelib_typedescription_new(
- ppRet, typelib_TypeClass_SEQUENCE, pName, element_td->pWeakRef, 0, nullptr );
- // register?
- typelib_typedescription_release( element_td );
- }
+ typelib_typedescription_new(
+ ppRet, typelib_TypeClass_SEQUENCE, pName, element_td->pWeakRef, 0, nullptr );
+ // register?
+ typelib_typedescription_release( element_td );
}
- if (nullptr == *ppRet)
- {
- // Check for derived interface member type:
- sal_Int32 i1 = name.lastIndexOf(":@");
- if (i1 >= 0) {
- sal_Int32 i2 = i1 + RTL_CONSTASCII_LENGTH(":@");
- sal_Int32 i3 = name.indexOf(',', i2);
- if (i3 >= 0) {
- sal_Int32 i4 = name.indexOf(':', i3);
- if (i4 >= 0) {
- typelib_TypeDescriptionReference * pBaseRef = nullptr;
- typelib_TypeDescription * pBase = nullptr;
- typelib_TypeDescription * pInterface = nullptr;
- typelib_typedescriptionreference_getByName(
- &pBaseRef, name.copy(0, i1).pData);
- if (pBaseRef != nullptr) {
- typelib_typedescriptionreference_getDescription(
- &pBase, pBaseRef);
+ }
+ if (nullptr == *ppRet)
+ {
+ // Check for derived interface member type:
+ sal_Int32 i1 = name.lastIndexOf(":@");
+ if (i1 >= 0) {
+ sal_Int32 i2 = i1 + RTL_CONSTASCII_LENGTH(":@");
+ sal_Int32 i3 = name.indexOf(',', i2);
+ if (i3 >= 0) {
+ sal_Int32 i4 = name.indexOf(':', i3);
+ if (i4 >= 0) {
+ typelib_TypeDescriptionReference * pBaseRef = nullptr;
+ typelib_TypeDescription * pBase = nullptr;
+ typelib_TypeDescription * pInterface = nullptr;
+ typelib_typedescriptionreference_getByName(
+ &pBaseRef, name.copy(0, i1).pData);
+ if (pBaseRef != nullptr) {
+ typelib_typedescriptionreference_getDescription(
+ &pBase, pBaseRef);
+ }
+ typelib_typedescription_getByName(
+ &pInterface, name.copy(i4 + 1).pData);
+ if (!createDerivedInterfaceMemberDescription(
+ ppRet, name, pBaseRef, pBase, pInterface,
+ name.copy(i2, i3 - i2).toInt32(),
+ name.copy(i3 + 1, i4 - i3 - 1).toInt32()))
+ {
+ if (pInterface != nullptr) {
+ typelib_typedescription_release(pInterface);
}
- typelib_typedescription_getByName(
- &pInterface, name.copy(i4 + 1).pData);
- if (!createDerivedInterfaceMemberDescription(
- ppRet, name, pBaseRef, pBase, pInterface,
- name.copy(i2, i3 - i2).toInt32(),
- name.copy(i3 + 1, i4 - i3 - 1).toInt32()))
- {
- if (pInterface != nullptr) {
- typelib_typedescription_release(pInterface);
- }
- if (pBase != nullptr) {
- typelib_typedescription_release(pBase);
- }
- if (pBaseRef != nullptr) {
- typelib_typedescriptionreference_release(
- pBaseRef);
- }
+ if (pBase != nullptr) {
+ typelib_typedescription_release(pBase);
+ }
+ if (pBaseRef != nullptr) {
+ typelib_typedescriptionreference_release(
+ pBaseRef);
}
}
}
}
}
- if (nullptr == *ppRet)
- {
- // on demand access
- rInit.callChain( ppRet, pName );
- }
+ }
+ if (nullptr == *ppRet)
+ {
+ // on demand access
+ rInit.callChain( ppRet, pName );
+ }
- if( *ppRet )
- {
- // typedescription found
- if (typelib_TypeClass_TYPEDEF == (*ppRet)->eTypeClass)
- {
- typelib_TypeDescription * pTD = nullptr;
- typelib_typedescriptionreference_getDescription(
- &pTD, reinterpret_cast<typelib_IndirectTypeDescription *>(*ppRet)->pType );
- typelib_typedescription_release( *ppRet );
- *ppRet = pTD;
- }
- else
- {
- // set to on demand
- (*ppRet)->bOnDemand = true;
- // The type description is hold by the reference until
- // on demand is activated.
- typelib_typedescription_register( ppRet );
+ if( !(*ppRet) )
+ return;
- // insert into the cache
- MutexGuard aGuard( rInit.getMutex() );
- if( !rInit.pCache )
- rInit.pCache.reset( new TypeDescriptionList_Impl );
- if( static_cast<sal_Int32>(rInit.pCache->size()) >= nCacheSize )
- {
- typelib_typedescription_release( rInit.pCache->front() );
- rInit.pCache->pop_front();
- }
- // descriptions in the cache must be acquired!
- typelib_typedescription_acquire( *ppRet );
- rInit.pCache->push_back( *ppRet );
- }
+ // typedescription found
+ if (typelib_TypeClass_TYPEDEF == (*ppRet)->eTypeClass)
+ {
+ typelib_TypeDescription * pTD = nullptr;
+ typelib_typedescriptionreference_getDescription(
+ &pTD, reinterpret_cast<typelib_IndirectTypeDescription *>(*ppRet)->pType );
+ typelib_typedescription_release( *ppRet );
+ *ppRet = pTD;
+ }
+ else
+ {
+ // set to on demand
+ (*ppRet)->bOnDemand = true;
+ // The type description is hold by the reference until
+ // on demand is activated.
+ typelib_typedescription_register( ppRet );
+
+ // insert into the cache
+ MutexGuard aGuard( rInit.getMutex() );
+ if( !rInit.pCache )
+ rInit.pCache.reset( new TypeDescriptionList_Impl );
+ if( static_cast<sal_Int32>(rInit.pCache->size()) >= nCacheSize )
+ {
+ typelib_typedescription_release( rInit.pCache->front() );
+ rInit.pCache->pop_front();
}
+ // descriptions in the cache must be acquired!
+ typelib_typedescription_acquire( *ppRet );
+ rInit.pCache->push_back( *ppRet );
}
}
@@ -2204,26 +2204,26 @@ extern "C" void typelib_typedescriptionreference_getByName(
*ppRet = nullptr;
}
TypeDescriptor_Init_Impl &rInit = Init::get();
- if( rInit.pWeakMap )
+ if( !rInit.pWeakMap )
+ return;
+
+ MutexGuard aGuard( rInit.getMutex() );
+ WeakMap_Impl::const_iterator aIt = rInit.pWeakMap->find( pName->buffer );
+ if( aIt == rInit.pWeakMap->end() )
+ return;
+
+ sal_Int32 n = osl_atomic_increment( &(*aIt).second->nRefCount );
+ if( n > 1 )
{
- MutexGuard aGuard( rInit.getMutex() );
- WeakMap_Impl::const_iterator aIt = rInit.pWeakMap->find( pName->buffer );
- if( aIt != rInit.pWeakMap->end() )
- {
- sal_Int32 n = osl_atomic_increment( &(*aIt).second->nRefCount );
- if( n > 1 )
- {
- // The reference is incremented. The object cannot be destroyed.
- // Release the guard at the earliest point.
- *ppRet = (*aIt).second;
- }
- else
- {
- // destruction of this type in progress (another thread!)
- // no access through this weak reference
- (void)osl_atomic_decrement( &(*aIt).second->nRefCount );
- }
- }
+ // The reference is incremented. The object cannot be destroyed.
+ // Release the guard at the earliest point.
+ *ppRet = (*aIt).second;
+ }
+ else
+ {
+ // destruction of this type in progress (another thread!)
+ // no access through this weak reference
+ (void)osl_atomic_decrement( &(*aIt).second->nRefCount );
}
}
@@ -2258,20 +2258,20 @@ extern "C" void SAL_CALL typelib_setCacheSize( sal_Int32 nNewSize )
SAL_THROW_EXTERN_C()
{
OSL_ENSURE( nNewSize >= 0, "### illegal cache size given!" );
- if (nNewSize >= 0)
+ if (nNewSize < 0)
+ return;
+
+ TypeDescriptor_Init_Impl &rInit = Init::get();
+ MutexGuard aGuard( rInit.getMutex() );
+ if ((nNewSize < nCacheSize) && rInit.pCache)
{
- TypeDescriptor_Init_Impl &rInit = Init::get();
- MutexGuard aGuard( rInit.getMutex() );
- if ((nNewSize < nCacheSize) && rInit.pCache)
+ while (static_cast<sal_Int32>(rInit.pCache->size()) != nNewSize)
{
- while (static_cast<sal_Int32>(rInit.pCache->size()) != nNewSize)
- {
- typelib_typedescription_release( rInit.pCache->front() );
- rInit.pCache->pop_front();
- }
+ typelib_typedescription_release( rInit.pCache->front() );
+ rInit.pCache->pop_front();
}
- nCacheSize = nNewSize;
}
+ nCacheSize = nNewSize;
}
diff --git a/cppu/source/uno/lbenv.cxx b/cppu/source/uno/lbenv.cxx
index aeac8b7ddd8a..c67d47dc948a 100644
--- a/cppu/source/uno/lbenv.cxx
+++ b/cppu/source/uno/lbenv.cxx
@@ -844,25 +844,25 @@ static void unoenv_computeObjectIdentifier(
::cppu::binuno_queryInterface(
pInterface, *typelib_static_type_getByTypeClass(
typelib_TypeClass_INTERFACE ) ));
- if (nullptr != pUnoI)
- {
- (*pUnoI->release)( pUnoI );
- // interface
- OUStringBuffer oid( 64 );
- oid.append( reinterpret_cast< sal_Int64 >(pUnoI), 16 );
- oid.append( ';' );
- // environment[context]
- oid.append( pEnv->aBase.pTypeName );
- oid.append( '[' );
- oid.append( reinterpret_cast< sal_Int64 >(
- reinterpret_cast<
- uno_Environment * >(pEnv)->pContext ), 16 );
- // process;good guid
- oid.append( unoenv_getStaticOIdPart() );
- OUString aStr( oid.makeStringAndClear() );
- *ppOId = aStr.pData;
- ::rtl_uString_acquire( *ppOId );
- }
+ if (nullptr == pUnoI)
+ return;
+
+ (*pUnoI->release)( pUnoI );
+ // interface
+ OUStringBuffer oid( 64 );
+ oid.append( reinterpret_cast< sal_Int64 >(pUnoI), 16 );
+ oid.append( ';' );
+ // environment[context]
+ oid.append( pEnv->aBase.pTypeName );
+ oid.append( '[' );
+ oid.append( reinterpret_cast< sal_Int64 >(
+ reinterpret_cast<
+ uno_Environment * >(pEnv)->pContext ), 16 );
+ // process;good guid
+ oid.append( unoenv_getStaticOIdPart() );
+ OUString aStr( oid.makeStringAndClear() );
+ *ppOId = aStr.pData;
+ ::rtl_uString_acquire( *ppOId );
}
diff --git a/cppu/source/uno/lbmap.cxx b/cppu/source/uno/lbmap.cxx
index ad27087b9b02..5fc1ab82eb9c 100644
--- a/cppu/source/uno/lbmap.cxx
+++ b/cppu/source/uno/lbmap.cxx
@@ -236,32 +236,32 @@ static void mediate_mapInterface(
typelib_InterfaceTypeDescription * pInterfaceTypeDescr )
{
OSL_ENSURE( pMapping && ppOut, "### null ptr!" );
- if (pMapping && ppOut)
- {
- uno_Mediate_Mapping * that = static_cast< uno_Mediate_Mapping * >( pMapping );
- uno_Mapping * pFrom2Uno = that->aFrom2Uno.get();
+ if (!(pMapping && ppOut))
+ return;
- uno_Interface * pUnoI = nullptr;
- (*pFrom2Uno->mapInterface)( pFrom2Uno, reinterpret_cast<void **>(&pUnoI), pInterface, pInterfaceTypeDescr );
- if (nullptr == pUnoI)
- {
- void * pOut = *ppOut;
- if (nullptr != pOut)
- {
- uno_ExtEnvironment * pTo = that->aTo.get()->pExtEnv;
- OSL_ENSURE( nullptr != pTo, "### cannot release out interface: leaking!" );
- if (nullptr != pTo)
- (*pTo->releaseInterface)( pTo, pOut );
- *ppOut = nullptr; // set to 0 anyway, because mapping was not successful!
- }
- }
- else
+ uno_Mediate_Mapping * that = static_cast< uno_Mediate_Mapping * >( pMapping );
+ uno_Mapping * pFrom2Uno = that->aFrom2Uno.get();
+
+ uno_Interface * pUnoI = nullptr;
+ (*pFrom2Uno->mapInterface)( pFrom2Uno, reinterpret_cast<void **>(&pUnoI), pInterface, pInterfaceTypeDescr );
+ if (nullptr == pUnoI)
+ {
+ void * pOut = *ppOut;
+ if (nullptr != pOut)
{
- uno_Mapping * pUno2To = that->aUno2To.get();
- (*pUno2To->mapInterface)( pUno2To, ppOut, pUnoI, pInterfaceTypeDescr );
- (*pUnoI->release)( pUnoI );
+ uno_ExtEnvironment * pTo = that->aTo.get()->pExtEnv;
+ OSL_ENSURE( nullptr != pTo, "### cannot release out interface: leaking!" );
+ if (nullptr != pTo)
+ (*pTo->releaseInterface)( pTo, pOut );
+ *ppOut = nullptr; // set to 0 anyway, because mapping was not successful!
}
}
+ else
+ {
+ uno_Mapping * pUno2To = that->aUno2To.get();
+ (*pUno2To->mapInterface)( pUno2To, ppOut, pUnoI, pInterfaceTypeDescr );
+ (*pUnoI->release)( pUnoI );
+ }
}
}