diff options
author | Noel Grandin <noel@peralex.com> | 2021-03-19 14:44:16 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-03-20 09:30:32 +0100 |
commit | 3e12b2fb64350938a3efe3252e84f62aa608356e (patch) | |
tree | ed3d5d4693db50099cfc1b9eb09530c2d4a554d3 /embeddedobj | |
parent | 8a6887717f4f667ff3621e98379e62e0d57a4a3a (diff) |
use unique_ptr in OCommonEmbeddedObject
Change-Id: I2258838cbbe242dbe31500ecd6f29c315a335b71
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/112743
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'embeddedobj')
-rw-r--r-- | embeddedobj/source/commonembedding/miscobj.cxx | 30 | ||||
-rw-r--r-- | embeddedobj/source/inc/commonembobj.hxx | 3 |
2 files changed, 15 insertions, 18 deletions
diff --git a/embeddedobj/source/commonembedding/miscobj.cxx b/embeddedobj/source/commonembedding/miscobj.cxx index c62527f84398..c30a4bc64168 100644 --- a/embeddedobj/source/commonembedding/miscobj.cxx +++ b/embeddedobj/source/commonembedding/miscobj.cxx @@ -41,8 +41,7 @@ using namespace ::com::sun::star; OCommonEmbeddedObject::OCommonEmbeddedObject( const uno::Reference< uno::XComponentContext >& rxContext, const uno::Sequence< beans::NamedValue >& aObjProps ) -: m_pInterfaceContainer( nullptr ) -, m_bReadOnly( false ) +: m_bReadOnly( false ) , m_bDisposed( false ) , m_bClosed( false ) , m_nObjectState( -1 ) @@ -67,8 +66,7 @@ OCommonEmbeddedObject::OCommonEmbeddedObject( const uno::Sequence< beans::NamedValue >& aObjProps, const uno::Sequence< beans::PropertyValue >& aMediaDescr, const uno::Sequence< beans::PropertyValue >& aObjectDescr ) -: m_pInterfaceContainer( nullptr ) -, m_bReadOnly( false ) +: m_bReadOnly( false ) , m_bDisposed( false ) , m_bClosed( false ) , m_nObjectState( embed::EmbedStates::LOADED ) @@ -242,17 +240,14 @@ OCommonEmbeddedObject::~OCommonEmbeddedObject() return; osl_atomic_increment(&m_refCount); - try { - lang::EventObject aSource( static_cast< ::cppu::OWeakObject* >( this ) ); - - if ( m_pInterfaceContainer ) - { + if ( m_pInterfaceContainer ) + { + try { + lang::EventObject aSource( static_cast< ::cppu::OWeakObject* >( this ) ); m_pInterfaceContainer->disposeAndClear( aSource ); - - delete m_pInterfaceContainer; - m_pInterfaceContainer = nullptr; - } - } catch( const uno::Exception& ) {} + } catch( const uno::Exception& ) {} + m_pInterfaceContainer.reset(); + } try { if ( m_xDocHolder.is() ) @@ -429,7 +424,7 @@ void SAL_CALL OCommonEmbeddedObject::addStateChangeListener( const uno::Referenc throw lang::DisposedException(); // TODO if ( !m_pInterfaceContainer ) - m_pInterfaceContainer = new ::cppu::OMultiTypeInterfaceContainerHelper( m_aMutex ); + m_pInterfaceContainer.reset(new ::cppu::OMultiTypeInterfaceContainerHelper( m_aMutex )); m_pInterfaceContainer->addInterface( cppu::UnoType<embed::XStateChangeListener>::get(), xListener ); @@ -494,6 +489,7 @@ void SAL_CALL OCommonEmbeddedObject::close( sal_Bool bDeliverOwnership ) } m_pInterfaceContainer->disposeAndClear( aSource ); + m_pInterfaceContainer.reset(); } m_bDisposed = true; // the object is disposed now for outside @@ -548,7 +544,7 @@ void SAL_CALL OCommonEmbeddedObject::addCloseListener( const uno::Reference< uti throw lang::DisposedException(); // TODO if ( !m_pInterfaceContainer ) - m_pInterfaceContainer = new ::cppu::OMultiTypeInterfaceContainerHelper(m_aMutex); + m_pInterfaceContainer.reset(new ::cppu::OMultiTypeInterfaceContainerHelper(m_aMutex)); m_pInterfaceContainer->addInterface( cppu::UnoType<util::XCloseListener>::get(), xListener ); } @@ -570,7 +566,7 @@ void SAL_CALL OCommonEmbeddedObject::addEventListener( const uno::Reference< doc throw lang::DisposedException(); // TODO if ( !m_pInterfaceContainer ) - m_pInterfaceContainer = new ::cppu::OMultiTypeInterfaceContainerHelper(m_aMutex); + m_pInterfaceContainer.reset(new ::cppu::OMultiTypeInterfaceContainerHelper(m_aMutex)); m_pInterfaceContainer->addInterface( cppu::UnoType<document::XEventListener>::get(), xListener ); } diff --git a/embeddedobj/source/inc/commonembobj.hxx b/embeddedobj/source/inc/commonembobj.hxx index 2294b0d7e915..e28b3654d1e7 100644 --- a/embeddedobj/source/inc/commonembobj.hxx +++ b/embeddedobj/source/inc/commonembobj.hxx @@ -35,6 +35,7 @@ #include <cppuhelper/weak.hxx> #include <rtl/ref.hxx> #include <map> +#include <memory> namespace com::sun::star { namespace embed { @@ -84,7 +85,7 @@ protected: rtl::Reference<DocumentHolder> m_xDocHolder; - ::cppu::OMultiTypeInterfaceContainerHelper* m_pInterfaceContainer; + std::unique_ptr<::cppu::OMultiTypeInterfaceContainerHelper> m_pInterfaceContainer; bool m_bReadOnly; |