basic/source/runtime/runtime.cxx | 8 ++++---- sd/inc/sdmod.hxx | 7 ++++--- sd/source/ui/unoidl/unoobj.cxx | 26 ++++++++++++-------------- 3 files changed, 20 insertions(+), 21 deletions(-)
New commits: commit 7078f667a3e39601c6d135e311de67fbab289a2b Author: Stephan Bergmann <sberg...@redhat.com> Date: Thu Feb 5 12:40:29 2015 +0100 Don't hold refcounted objects by naked pointer (and no need to hold css::uno::Sequence objects by pointer either). Regression from e537d227d3a801076aff98c113650942fb6b3699 "hard to find accidental leaks with all the deliberate ones" caused JunitTest_svx_unoapi to sometimes crash. Change-Id: I3579c4bbac58d7e341c8acb52dd3f0f06f7b2245 diff --git a/sd/inc/sdmod.hxx b/sd/inc/sdmod.hxx index d2a64ac..d3ae1b2 100644 --- a/sd/inc/sdmod.hxx +++ b/sd/inc/sdmod.hxx @@ -23,6 +23,7 @@ #include "glob.hxx" #include "pres.hxx" +#include <rtl/ref.hxx> #include <sot/storage.hxx> #include <tools/shl.hxx> #include "sddllapi.h" @@ -32,7 +33,7 @@ #include <sfx2/module.hxx> #include <vcl/vclevent.hxx> #include <sal/types.h> -#include <boost/ptr_container/ptr_map.hpp> +#include <map> #include <memory> class SdOptions; @@ -60,8 +61,8 @@ enum SdOptionStreamMode SD_OPTION_STORE = 1 }; -typedef boost::ptr_map< sal_uIntPtr, SfxExtItemPropertySetInfo > SdExtPropertySetInfoCache; -typedef boost::ptr_map< sal_uInt32, css::uno::Sequence< css::uno::Type> > SdTypesCache; +typedef std::map< sal_uIntPtr, rtl::Reference<SfxExtItemPropertySetInfo> > SdExtPropertySetInfoCache; +typedef std::map< sal_uInt32, css::uno::Sequence< css::uno::Type> > SdTypesCache; /* diff --git a/sd/source/ui/unoidl/unoobj.cxx b/sd/source/ui/unoidl/unoobj.cxx index 47fe407..59aeaa2 100644 --- a/sd/source/ui/unoidl/unoobj.cxx +++ b/sd/source/ui/unoidl/unoobj.cxx @@ -19,7 +19,7 @@ #include <sal/config.h> -#include <map> +#include <utility> #include <com/sun/star/style/XStyle.hpp> #include <com/sun/star/presentation/ClickAction.hpp> @@ -338,24 +338,24 @@ uno::Sequence< uno::Type > SAL_CALL SdXShape::getTypes() else { sal_uInt32 nObjId = mpShape->getShapeKind(); - uno::Sequence< uno::Type >* pTypes; + uno::Sequence< uno::Type > aTypes; SdTypesCache& gImplTypesCache = SD_MOD()->gImplTypesCache; SdTypesCache::iterator aIter( gImplTypesCache.find( nObjId ) ); if( aIter == gImplTypesCache.end() ) { - pTypes = new uno::Sequence< uno::Type >( mpShape->_getTypes() ); - sal_uInt32 nCount = pTypes->getLength(); - pTypes->realloc( nCount+1 ); - (*pTypes)[nCount] = cppu::UnoType<lang::XTypeProvider>::get(); + aTypes = mpShape->_getTypes(); + sal_uInt32 nCount = aTypes.getLength(); + aTypes.realloc( nCount+1 ); + aTypes[nCount] = cppu::UnoType<lang::XTypeProvider>::get(); - gImplTypesCache.insert(nObjId, pTypes); + gImplTypesCache.insert(std::make_pair(nObjId, aTypes)); } else { // use the already computed implementation id - pTypes = (*aIter).second; + aTypes = (*aIter).second; } - return *pTypes; + return aTypes; } } @@ -422,7 +422,7 @@ uno::Any SAL_CALL SdXShape::getPropertyDefault( const OUString& aPropertyName ) throw(::com::sun::star::uno::RuntimeException) { sal_uIntPtr nObjId = reinterpret_cast<sal_uIntPtr>(mpShape->getPropertyMapEntries()); - SfxExtItemPropertySetInfo* pInfo = NULL; + rtl::Reference<SfxExtItemPropertySetInfo> pInfo; SdExtPropertySetInfoCache& rCache = (mpModel && mpModel->IsImpressDocument()) ? SD_MOD()->gImplImpressPropertySetInfoCache : SD_MOD()->gImplDrawPropertySetInfoCache; @@ -432,9 +432,8 @@ uno::Any SAL_CALL SdXShape::getPropertyDefault( const OUString& aPropertyName ) { uno::Reference< beans::XPropertySetInfo > xInfo( mpShape->_getPropertySetInfo() ); pInfo = new SfxExtItemPropertySetInfo( mpMap, xInfo->getProperties() ); - pInfo->acquire(); - rCache.insert(nObjId, pInfo); + rCache.insert(std::make_pair(nObjId, pInfo)); } else { @@ -442,8 +441,7 @@ uno::Any SAL_CALL SdXShape::getPropertyDefault( const OUString& aPropertyName ) pInfo = (*aIter).second; } - uno::Reference< beans::XPropertySetInfo > xInfo( pInfo ); - return pInfo; + return pInfo.get(); } void SAL_CALL SdXShape::setPropertyValue( const OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) commit 0f86834bd5e2f8d8c7c7880c6f97273d45c599de Author: Stephan Bergmann <sberg...@redhat.com> Date: Thu Feb 5 12:39:16 2015 +0100 Remove redundant explicit up-casts Change-Id: I58fd91354fe41673216674f5ae9c11c17cb3f29d diff --git a/basic/source/runtime/runtime.cxx b/basic/source/runtime/runtime.cxx index e87a109..4dc9979 100644 --- a/basic/source/runtime/runtime.cxx +++ b/basic/source/runtime/runtime.cxx @@ -1713,7 +1713,7 @@ void SbiRuntime::StepPUT() // store on its own method (inside a function)? bool bFlagsChanged = false; SbxFlagBits n = SBX_NONE; - if( refVar.get() == static_cast<SbxVariable*>(pMeth) ) + if( refVar.get() == pMeth ) { bFlagsChanged = true; n = refVar->GetFlags(); @@ -1865,7 +1865,7 @@ void SbiRuntime::StepSET_Impl( SbxVariableRef& refVal, SbxVariableRef& refVar, b { bool bFlagsChanged = false; SbxFlagBits n = SBX_NONE; - if( refVar.get() == static_cast<SbxVariable*>(pMeth) ) + if( refVar.get() == pMeth ) { bFlagsChanged = true; n = refVar->GetFlags(); @@ -2066,7 +2066,7 @@ void SbiRuntime::StepLSET() else { SbxFlagBits n = refVar->GetFlags(); - if( refVar.get() == static_cast<SbxVariable*>(pMeth) ) + if( refVar.get() == pMeth ) { refVar->SetFlag( SBX_WRITE ); } @@ -2102,7 +2102,7 @@ void SbiRuntime::StepRSET() else { SbxFlagBits n = refVar->GetFlags(); - if( refVar.get() == static_cast<SbxVariable*>(pMeth) ) + if( refVar.get() == pMeth ) { refVar->SetFlag( SBX_WRITE ); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits