summaryrefslogtreecommitdiff
path: root/cppu/source/typelib
diff options
context:
space:
mode:
authorRĂ¼diger Timm <rt@openoffice.org>2004-11-26 19:49:31 +0000
committerRĂ¼diger Timm <rt@openoffice.org>2004-11-26 19:49:31 +0000
commitb973eecc8f64af510aaaee5dfc8dbc49e1c01995 (patch)
treefa281fb6ec6625354db7d468c93e92f371262bc7 /cppu/source/typelib
parent34a74856c15a6917fba1a18d1a38af5907070ff5 (diff)
INTEGRATION: CWS presentationengine01 (1.21.12); FILE MERGED
2004/10/13 00:00:46 thb 1.21.12.4: RESYNC: (1.25-1.27); FILE MERGED 2004/10/08 19:45:00 thb 1.21.12.3: #i10000# Fixed windows build breakage (debug=t build only) 2004/07/06 19:25:04 thb 1.21.12.2: RESYNC: (1.21-1.25); FILE MERGED 2004/03/02 16:47:13 sb 1.21.12.1: #i26044# Make sure interface type descriptions are as complete as necessary when used.
Diffstat (limited to 'cppu/source/typelib')
-rw-r--r--cppu/source/typelib/typelib.cxx20
1 files changed, 16 insertions, 4 deletions
diff --git a/cppu/source/typelib/typelib.cxx b/cppu/source/typelib/typelib.cxx
index 261715144..4924643b0 100644
--- a/cppu/source/typelib/typelib.cxx
+++ b/cppu/source/typelib/typelib.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: typelib.cxx,v $
*
- * $Revision: 1.27 $
+ * $Revision: 1.28 $
*
- * last change: $Author: rt $ $Date: 2004-09-08 14:30:26 $
+ * last change: $Author: rt $ $Date: 2004-11-26 20:49:31 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -1197,6 +1197,11 @@ extern "C" void SAL_CALL typelib_typedescription_newMIInterface(
typelib_TypeDescriptionReference ** ppMembers )
SAL_THROW_EXTERN_C()
{
+ if (*ppRet != 0) {
+ typelib_typedescription_release(&(*ppRet)->aBase);
+ *ppRet = 0;
+ }
+
typelib_InterfaceTypeDescription * pITD = 0;
typelib_typedescription_newEmpty(
(typelib_TypeDescription **)&pITD, typelib_TypeClass_INTERFACE, pTypeName );
@@ -1209,6 +1214,15 @@ extern "C" void SAL_CALL typelib_typedescription_newMIInterface(
reinterpret_cast< typelib_TypeDescription ** >(
&pITD->ppBaseTypes[i]),
ppBaseInterfaces[i]);
+ if (pITD->ppBaseTypes[i] == 0
+ || !complete(
+ reinterpret_cast< typelib_TypeDescription ** >(
+ &pITD->ppBaseTypes[i]),
+ false))
+ {
+ OSL_ASSERT(false);
+ return;
+ }
OSL_ASSERT(pITD->ppBaseTypes[i] != 0);
}
if (nBaseInterfaces > 0) {
@@ -1278,8 +1292,6 @@ extern "C" void SAL_CALL typelib_typedescription_newMIInterface(
pTmp->nAlignment = adjustAlignment( pTmp->nAlignment );
pTmp->bComplete = sal_False;
- if (*ppRet)
- ::typelib_typedescription_release( (typelib_TypeDescription *)*ppRet );
*ppRet = pITD;
}