From 2660d24a07866e083c5135ea263030f3e3a2e729 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Mon, 13 Jul 2015 16:17:00 +0200 Subject: new loplugin: refcounting This was a feature requested by mmeeks, as a result of tdf#92611. It validates that things that extend XInterface are not directly heap/stack-allocated, but have their lifecycle managed via css::uno::Reference or rtl::Reference. Change-Id: I28e3b8b236f6a4a56d0a6d6f26ad54e44b36e692 Reviewed-on: https://gerrit.libreoffice.org/16924 Reviewed-by: Noel Grandin Tested-by: Noel Grandin --- dbaccess/source/core/dataaccess/ComponentDefinition.cxx | 13 +++++++------ dbaccess/source/core/dataaccess/ComponentDefinition.hxx | 2 +- dbaccess/source/core/dataaccess/datasource.cxx | 4 ++-- dbaccess/source/core/dataaccess/datasource.hxx | 2 +- dbaccess/source/ui/misc/singledoccontroller.cxx | 10 +++++----- 5 files changed, 16 insertions(+), 15 deletions(-) (limited to 'dbaccess') diff --git a/dbaccess/source/core/dataaccess/ComponentDefinition.cxx b/dbaccess/source/core/dataaccess/ComponentDefinition.cxx index 7708a6a1ca0f..ae89078aa20a 100644 --- a/dbaccess/source/core/dataaccess/ComponentDefinition.cxx +++ b/dbaccess/source/core/dataaccess/ComponentDefinition.cxx @@ -191,8 +191,9 @@ Reference< XInterface > OComponentDefinition::Create( const Reference< XComponen void SAL_CALL OComponentDefinition::disposing() { OContentHelper::disposing(); - if ( m_pColumns.get() ) - m_pColumns->disposing(); + if ( m_xColumns.is() ) + m_xColumns->disposing(); + m_xColumns.clear(); m_xColumnPropertyListener->clear(); m_xColumnPropertyListener.clear(); } @@ -227,7 +228,7 @@ Reference< XNameAccess> OComponentDefinition::getColumns() throw (RuntimeExcepti ::osl::MutexGuard aGuard(m_aMutex); ::connectivity::checkDisposed(OContentHelper::rBHelper.bDisposed); - if ( !m_pColumns.get() ) + if ( !m_xColumns.is() ) { ::std::vector< OUString> aNames; @@ -239,10 +240,10 @@ Reference< XNameAccess> OComponentDefinition::getColumns() throw (RuntimeExcepti for ( ; aIter != aEnd; ++aIter ) aNames.push_back( aIter->first ); - m_pColumns.reset( new OColumns( *this, m_aMutex, true, aNames, this, NULL, true, false, false ) ); - m_pColumns->setParent( *this ); + m_xColumns = new OColumns( *this, m_aMutex, true, aNames, this, NULL, true, false, false ); + m_xColumns->setParent( *this ); } - return m_pColumns.get(); + return m_xColumns.get(); } OColumn* OComponentDefinition::createColumn(const OUString& _rName) const diff --git a/dbaccess/source/core/dataaccess/ComponentDefinition.hxx b/dbaccess/source/core/dataaccess/ComponentDefinition.hxx index ad177f52a067..b561874992c4 100644 --- a/dbaccess/source/core/dataaccess/ComponentDefinition.hxx +++ b/dbaccess/source/core/dataaccess/ComponentDefinition.hxx @@ -88,7 +88,7 @@ class OComponentDefinition :public OContentHelper OComponentDefinition(); protected: - ::std::unique_ptr< OColumns > m_pColumns; + css::uno::Reference< OColumns > m_xColumns; rtl::Reference m_xColumnPropertyListener; bool m_bTable; diff --git a/dbaccess/source/core/dataaccess/datasource.cxx b/dbaccess/source/core/dataaccess/datasource.cxx index 5568cb87bbad..1f80f08bf4fa 100644 --- a/dbaccess/source/core/dataaccess/datasource.cxx +++ b/dbaccess/source/core/dataaccess/datasource.cxx @@ -491,7 +491,7 @@ ODatabaseSource::ODatabaseSource(const ::rtl::Reference& _pI :ModelDependentComponent( _pImpl ) ,ODatabaseSource_Base( getMutex() ) ,OPropertySetHelper( ODatabaseSource_Base::rBHelper ) - ,m_aBookmarks( *this, getMutex() ) + ,m_xBookmarks( new OBookmarkContainer( *this, getMutex() ) ) ,m_aFlushListeners( getMutex() ) { // some kind of default @@ -1200,7 +1200,7 @@ Reference< XConnection > ODatabaseSource::getConnection(const OUString& user, co Reference< XNameAccess > SAL_CALL ODatabaseSource::getBookmarks( ) throw (RuntimeException, std::exception) { ModelMethodGuard aGuard( *this ); - return static_cast< XNameContainer* >(&m_aBookmarks); + return static_cast< XNameContainer* >(m_xBookmarks.get()); } Reference< XNameAccess > SAL_CALL ODatabaseSource::getQueryDefinitions( ) throw(RuntimeException, std::exception) diff --git a/dbaccess/source/core/dataaccess/datasource.hxx b/dbaccess/source/core/dataaccess/datasource.hxx index 8e53e9facd73..1aef2a7dad26 100644 --- a/dbaccess/source/core/dataaccess/datasource.hxx +++ b/dbaccess/source/core/dataaccess/datasource.hxx @@ -82,7 +82,7 @@ class ODatabaseSource :public ModelDependentComponent // must be first private: using ODatabaseSource_Base::rBHelper; - OBookmarkContainer m_aBookmarks; + css::uno::Reference m_xBookmarks; ::cppu::OInterfaceContainerHelper m_aFlushListeners; private: diff --git a/dbaccess/source/ui/misc/singledoccontroller.cxx b/dbaccess/source/ui/misc/singledoccontroller.cxx index 77408cdaf51a..ed6180b2937f 100644 --- a/dbaccess/source/ui/misc/singledoccontroller.cxx +++ b/dbaccess/source/ui/misc/singledoccontroller.cxx @@ -54,10 +54,10 @@ namespace dbaui // OSingleDocumentController_Data struct OSingleDocumentController_Data { - ::boost::scoped_ptr< UndoManager > m_pUndoManager; + Reference< UndoManager > m_xUndoManager; OSingleDocumentController_Data( ::cppu::OWeakObject& i_parent, ::osl::Mutex& i_mutex ) - :m_pUndoManager( new UndoManager( i_parent, i_mutex ) ) + :m_xUndoManager( new UndoManager( i_parent, i_mutex ) ) { } }; @@ -77,7 +77,7 @@ namespace dbaui { OSingleDocumentController_Base::disposing(); ClearUndoManager(); - m_pData->m_pUndoManager->disposing(); + m_pData->m_xUndoManager->disposing(); } void SAL_CALL OSingleDocumentController::disposing( const EventObject& i_event ) throw( RuntimeException, std::exception ) @@ -93,7 +93,7 @@ namespace dbaui SfxUndoManager& OSingleDocumentController::GetUndoManager() const { - return m_pData->m_pUndoManager->GetSfxUndoManager(); + return m_pData->m_xUndoManager->GetSfxUndoManager(); } void OSingleDocumentController::addUndoActionAndInvalidate(SfxUndoAction *_pAction) @@ -111,7 +111,7 @@ namespace dbaui Reference< XUndoManager > SAL_CALL OSingleDocumentController::getUndoManager( ) throw (RuntimeException, std::exception) { - return m_pData->m_pUndoManager.get(); + return m_pData->m_xUndoManager.get(); } FeatureState OSingleDocumentController::GetState(sal_uInt16 _nId) const -- cgit