diff options
author | RĂ¼diger Timm <rt@openoffice.org> | 2004-11-26 19:49:31 +0000 |
---|---|---|
committer | RĂ¼diger Timm <rt@openoffice.org> | 2004-11-26 19:49:31 +0000 |
commit | b973eecc8f64af510aaaee5dfc8dbc49e1c01995 (patch) | |
tree | fa281fb6ec6625354db7d468c93e92f371262bc7 /cppu/source/typelib | |
parent | 34a74856c15a6917fba1a18d1a38af5907070ff5 (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.cxx | 20 |
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; } |