include/sfx2/app.hxx | 2 +- include/sfx2/docfile.hxx | 6 +++--- sc/source/ui/docshell/docsh4.cxx | 4 ++-- sc/source/ui/docshell/externalrefmgr.cxx | 4 ++-- sc/source/ui/docshell/tablink.cxx | 8 ++++---- sd/qa/unit/sdmodeltestbase.hxx | 4 ++-- sd/source/ui/app/sdmod1.cxx | 4 ++-- sd/source/ui/sidebar/MasterPageContainerProviders.cxx | 4 ++-- sfx2/source/appl/appopen.cxx | 8 ++------ sfx2/source/doc/docfile.cxx | 8 ++++---- sfx2/source/doc/docinsert.cxx | 4 ++-- sfx2/source/doc/new.cxx | 4 ++-- sfx2/source/doc/objstor.cxx | 15 ++++++++------- 13 files changed, 36 insertions(+), 39 deletions(-)
New commits: commit 6a6774cc4b22aceaca4441318420bb9dfb1cacab Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Mon Aug 6 17:17:20 2018 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Wed Aug 8 09:31:02 2018 +0200 loplugin:useuniqueptr in SfxApplication::LoadTemplate and SfxMedium pass SfxItemSet around by std::unique_ptr Change-Id: I54da96d8df224f7c4f2fb9ebf06ed32d479298e7 Reviewed-on: https://gerrit.libreoffice.org/58649 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/include/sfx2/app.hxx b/include/sfx2/app.hxx index a3299e9cde73..c5ed9b880bd0 100644 --- a/include/sfx2/app.hxx +++ b/include/sfx2/app.hxx @@ -151,7 +151,7 @@ public: /** * @param pArgs Takes ownership */ - ErrCode LoadTemplate( SfxObjectShellLock& xDoc, const OUString& rFileName, SfxItemSet* pArgs ); + ErrCode LoadTemplate( SfxObjectShellLock& xDoc, const OUString& rFileName, std::unique_ptr<SfxItemSet> pArgs ); vcl::Window* GetTopWindow() const; // members diff --git a/include/sfx2/docfile.hxx b/include/sfx2/docfile.hxx index d136aa85e6e0..0fa8fbbae69c 100644 --- a/include/sfx2/docfile.hxx +++ b/include/sfx2/docfile.hxx @@ -43,6 +43,7 @@ #include <cppuhelper/weak.hxx> #include <rtl/ustring.hxx> #include <svl/lstner.hxx> +#include <svl/itemset.hxx> #include <tools/link.hxx> #include <tools/stream.hxx> #include <ucbhelper/content.hxx> @@ -55,7 +56,6 @@ class INetURLObject; class SfxObjectShell; class SfxFrame; class Timer; -class SfxItemSet; class DateTime; class SFX2_DLLPUBLIC SfxMedium : public SvRefBase @@ -78,7 +78,7 @@ public: SfxMedium( const OUString &rName, StreamMode nOpenMode, std::shared_ptr<const SfxFilter> pFilter = nullptr, - SfxItemSet *pSet = nullptr ); + std::unique_ptr<SfxItemSet> pSet = nullptr ); /** * @param pSet Takes ownership */ @@ -86,7 +86,7 @@ public: const OUString &rReferer, StreamMode nOpenMode, std::shared_ptr<const SfxFilter> pFilter = nullptr, - SfxItemSet *pSet = nullptr ); + std::unique_ptr<SfxItemSet> pSet = nullptr ); /** * @param pSet does NOT take ownership diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx index c1139561817e..3d7b30aec367 100644 --- a/sc/source/ui/docshell/docsh4.cxx +++ b/sc/source/ui/docshell/docsh4.cxx @@ -750,12 +750,12 @@ void ScDocShell::Execute( SfxRequest& rReq ) ScDocumentLoader::RemoveAppPrefix( aFilterName ); std::shared_ptr<const SfxFilter> pFilter = ScDocShell::Factory().GetFilterContainer()->GetFilter4FilterName( aFilterName ); - SfxItemSet* pSet = new SfxAllItemSet( pApp->GetPool() ); + std::unique_ptr<SfxItemSet> pSet(new SfxAllItemSet( pApp->GetPool() )); if (!aOptions.isEmpty()) pSet->Put( SfxStringItem( SID_FILE_FILTEROPTIONS, aOptions ) ); if ( nVersion != 0 ) pSet->Put( SfxInt16Item( SID_VERSION, nVersion ) ); - pMed = new SfxMedium( aFileName, StreamMode::STD_READ, pFilter, pSet ); + pMed = new SfxMedium( aFileName, StreamMode::STD_READ, pFilter, std::move(pSet) ); } else { diff --git a/sc/source/ui/docshell/externalrefmgr.cxx b/sc/source/ui/docshell/externalrefmgr.cxx index a70d2019a69d..f274fd5d657a 100644 --- a/sc/source/ui/docshell/externalrefmgr.cxx +++ b/sc/source/ui/docshell/externalrefmgr.cxx @@ -2502,7 +2502,7 @@ SfxObjectShellRef ScExternalRefManager::loadSrcDocument(sal_uInt16 nFileId, OUSt setRelativeFileName(nFileId, aStr); } - SfxItemSet* pSet = new SfxAllItemSet(SfxGetpApp()->GetPool()); + std::unique_ptr<SfxItemSet> pSet(new SfxAllItemSet(SfxGetpApp()->GetPool())); if (!aOptions.isEmpty()) pSet->Put(SfxStringItem(SID_FILE_FILTEROPTIONS, aOptions)); @@ -2524,7 +2524,7 @@ SfxObjectShellRef ScExternalRefManager::loadSrcDocument(sal_uInt16 nFileId, OUSt } } - unique_ptr<SfxMedium> pMedium(new SfxMedium(aFile, StreamMode::STD_READ, pFilter, pSet)); + unique_ptr<SfxMedium> pMedium(new SfxMedium(aFile, StreamMode::STD_READ, pFilter, std::move(pSet))); if (pMedium->GetError() != ERRCODE_NONE) return nullptr; diff --git a/sc/source/ui/docshell/tablink.cxx b/sc/source/ui/docshell/tablink.cxx index 527aefedb0fb..816a69bbf8a1 100644 --- a/sc/source/ui/docshell/tablink.cxx +++ b/sc/source/ui/docshell/tablink.cxx @@ -187,11 +187,11 @@ bool ScTableLink::Refresh(const OUString& rNewFile, const OUString& rNewFilter, aOptions = *pNewOptions; // always create ItemSet, so that DocShell can set the options - SfxItemSet* pSet = new SfxAllItemSet( SfxGetpApp()->GetPool() ); + std::unique_ptr<SfxItemSet> pSet(new SfxAllItemSet( SfxGetpApp()->GetPool() )); if (!aOptions.isEmpty()) pSet->Put( SfxStringItem( SID_FILE_FILTEROPTIONS, aOptions ) ); - SfxMedium* pMed = new SfxMedium(aNewUrl, StreamMode::STD_READ, pFilter, pSet); + SfxMedium* pMed = new SfxMedium(aNewUrl, StreamMode::STD_READ, pFilter, std::move(pSet)); if ( bInEdit ) // only if using the edit dialog, pMed->UseInteractionHandler(true); // enable the filter options dialog @@ -496,7 +496,7 @@ SfxMedium* ScDocumentLoader::CreateMedium( const OUString& rFileName, std::share const OUString& rOptions, weld::Window* pInteractionParent ) { // Always create SfxItemSet so ScDocShell can set options. - SfxItemSet* pSet = new SfxAllItemSet( SfxGetpApp()->GetPool() ); + std::unique_ptr<SfxItemSet> pSet(new SfxAllItemSet( SfxGetpApp()->GetPool() )); if ( !rOptions.isEmpty() ) pSet->Put( SfxStringItem( SID_FILE_FILTEROPTIONS, rOptions ) ); @@ -508,7 +508,7 @@ SfxMedium* ScDocumentLoader::CreateMedium( const OUString& rFileName, std::share pSet->Put(SfxUnoAnyItem(SID_INTERACTIONHANDLER, makeAny(xIHdl))); } - SfxMedium *pRet = new SfxMedium( rFileName, StreamMode::STD_READ, pFilter, pSet ); + SfxMedium *pRet = new SfxMedium( rFileName, StreamMode::STD_READ, pFilter, std::move(pSet) ); if (pInteractionParent) pRet->UseInteractionHandler(true); // to enable the filter options dialog return pRet; diff --git a/sd/qa/unit/sdmodeltestbase.hxx b/sd/qa/unit/sdmodeltestbase.hxx index 5c90c0a6b95f..16af58532695 100644 --- a/sd/qa/unit/sdmodeltestbase.hxx +++ b/sd/qa/unit/sdmodeltestbase.hxx @@ -123,7 +123,7 @@ public: protected: /// Load the document. - sd::DrawDocShellRef loadURL( const OUString &rURL, sal_Int32 nFormat, SfxAllItemSet *pParams = nullptr ) + sd::DrawDocShellRef loadURL( const OUString &rURL, sal_Int32 nFormat, std::unique_ptr<SfxAllItemSet> pParams = nullptr ) { FileFormat *pFmt = getFormat(nFormat); CPPUNIT_ASSERT_MESSAGE( "missing filter info", pFmt->pName != nullptr ); @@ -142,7 +142,7 @@ protected: std::shared_ptr<const SfxFilter> pFilt(pFilter); ::sd::DrawDocShellRef xDocShRef = new ::sd::DrawDocShell(SfxObjectCreateMode::EMBEDDED, false, DocumentType::Impress); - SfxMedium* pSrcMed = new SfxMedium(rURL, StreamMode::STD_READ, pFilt, pParams); + SfxMedium* pSrcMed = new SfxMedium(rURL, StreamMode::STD_READ, pFilt, std::move(pParams)); if ( !xDocShRef->DoLoad(pSrcMed) || !xDocShRef.is() ) { if (xDocShRef.is()) diff --git a/sd/source/ui/app/sdmod1.cxx b/sd/source/ui/app/sdmod1.cxx index 56f9eb41cd8f..a575c6ad7639 100644 --- a/sd/source/ui/app/sdmod1.cxx +++ b/sd/source/ui/app/sdmod1.cxx @@ -431,10 +431,10 @@ SfxFrame* SdModule::CreateFromTemplate( const OUString& rTemplatePath, const Ref SfxObjectShellLock xDocShell; - SfxItemSet* pSet = new SfxAllItemSet( SfxGetpApp()->GetPool() ); + std::unique_ptr<SfxItemSet> pSet(new SfxAllItemSet( SfxGetpApp()->GetPool() )); pSet->Put( SfxBoolItem( SID_TEMPLATE, true ) ); - ErrCode lErr = SfxGetpApp()->LoadTemplate( xDocShell, rTemplatePath, pSet ); + ErrCode lErr = SfxGetpApp()->LoadTemplate( xDocShell, rTemplatePath, std::move(pSet) ); SfxObjectShell* pDocShell = xDocShell; diff --git a/sd/source/ui/sidebar/MasterPageContainerProviders.cxx b/sd/source/ui/sidebar/MasterPageContainerProviders.cxx index a87665fb5c41..1bfcca069b49 100644 --- a/sd/source/ui/sidebar/MasterPageContainerProviders.cxx +++ b/sd/source/ui/sidebar/MasterPageContainerProviders.cxx @@ -141,10 +141,10 @@ SdPage* TemplatePageObjectProvider::operator() (SdDrawDocument*) ::sd::DrawDocShell* TemplatePageObjectProvider::LoadDocument (const OUString& sFileName) { SfxApplication* pSfxApp = SfxGetpApp(); - SfxItemSet* pSet = new SfxAllItemSet (pSfxApp->GetPool()); + std::unique_ptr<SfxItemSet> pSet(new SfxAllItemSet (pSfxApp->GetPool())); pSet->Put (SfxBoolItem (SID_TEMPLATE, true)); pSet->Put (SfxBoolItem (SID_PREVIEW, true)); - if (pSfxApp->LoadTemplate (mxDocumentShell, sFileName, pSet)) + if (pSfxApp->LoadTemplate (mxDocumentShell, sFileName, std::move(pSet))) { mxDocumentShell = nullptr; } diff --git a/sfx2/source/appl/appopen.cxx b/sfx2/source/appl/appopen.cxx index 60f2c508ebbb..432db5e18ebb 100644 --- a/sfx2/source/appl/appopen.cxx +++ b/sfx2/source/appl/appopen.cxx @@ -281,7 +281,7 @@ ErrCode CheckPasswd_Impl } -ErrCode SfxApplication::LoadTemplate( SfxObjectShellLock& xDoc, const OUString &rFileName, SfxItemSet* pSet ) +ErrCode SfxApplication::LoadTemplate( SfxObjectShellLock& xDoc, const OUString &rFileName, std::unique_ptr<SfxItemSet> pSet ) { std::shared_ptr<const SfxFilter> pFilter; SfxMedium aMedium( rFileName, ( StreamMode::READ | StreamMode::SHARE_DENYNONE ) ); @@ -291,7 +291,6 @@ ErrCode SfxApplication::LoadTemplate( SfxObjectShellLock& xDoc, const OUString & if ( aMedium.GetError() ) { - delete pSet; return aMedium.GetErrorCode(); } @@ -299,20 +298,17 @@ ErrCode SfxApplication::LoadTemplate( SfxObjectShellLock& xDoc, const OUString & ErrCode nErr = GetFilterMatcher().GuessFilter( aMedium, pFilter, SfxFilterFlags::TEMPLATE, SfxFilterFlags::NONE ); if ( ERRCODE_NONE != nErr) { - delete pSet; return ERRCODE_SFX_NOTATEMPLATE; } if( !pFilter || !pFilter->IsAllowedAsTemplate() ) { - delete pSet; return ERRCODE_SFX_NOTATEMPLATE; } if ( pFilter->GetFilterFlags() & SfxFilterFlags::STARONEFILTER ) { DBG_ASSERT( !xDoc.Is(), "Sorry, not implemented!" ); - delete pSet; SfxStringItem aName( SID_FILE_NAME, rFileName ); SfxStringItem aReferer( SID_REFERER, OUString("private:user") ); SfxStringItem aFlags( SID_OPTIONS, OUString("T") ); @@ -343,7 +339,7 @@ ErrCode SfxApplication::LoadTemplate( SfxObjectShellLock& xDoc, const OUString & xDoc = SfxObjectShell::CreateObject( pFilter->GetServiceName() ); //pMedium takes ownership of pSet - SfxMedium *pMedium = new SfxMedium( rFileName, StreamMode::STD_READ, pFilter, pSet ); + SfxMedium *pMedium = new SfxMedium( rFileName, StreamMode::STD_READ, pFilter, std::move(pSet) ); if(!xDoc->DoLoad(pMedium)) { ErrCode nErrCode = xDoc->GetErrorCode(); diff --git a/sfx2/source/doc/docfile.cxx b/sfx2/source/doc/docfile.cxx index d532ede31a0b..638ecb5fc2f0 100644 --- a/sfx2/source/doc/docfile.cxx +++ b/sfx2/source/doc/docfile.cxx @@ -3081,20 +3081,20 @@ void SfxMedium::CompleteReOpen() pImpl->bUseInteractionHandler = bUseInteractionHandler; } -SfxMedium::SfxMedium(const OUString &rName, StreamMode nOpenMode, std::shared_ptr<const SfxFilter> pFilter, SfxItemSet *pInSet) : +SfxMedium::SfxMedium(const OUString &rName, StreamMode nOpenMode, std::shared_ptr<const SfxFilter> pFilter, std::unique_ptr<SfxItemSet> pInSet) : pImpl(new SfxMedium_Impl) { - pImpl->m_pSet.reset( pInSet ); + pImpl->m_pSet = std::move( pInSet ); pImpl->m_pFilter = std::move(pFilter); pImpl->m_aLogicName = rName; pImpl->m_nStorOpenMode = nOpenMode; Init_Impl(); } -SfxMedium::SfxMedium(const OUString &rName, const OUString &rReferer, StreamMode nOpenMode, std::shared_ptr<const SfxFilter> pFilter, SfxItemSet *pInSet) : +SfxMedium::SfxMedium(const OUString &rName, const OUString &rReferer, StreamMode nOpenMode, std::shared_ptr<const SfxFilter> pFilter, std::unique_ptr<SfxItemSet> pInSet) : pImpl(new SfxMedium_Impl) { - pImpl->m_pSet.reset( pInSet ); + pImpl->m_pSet = std::move(pInSet); SfxItemSet * s = GetItemSet(); if (s->GetItem(SID_REFERER) == nullptr) { s->Put(SfxStringItem(SID_REFERER, rReferer)); diff --git a/sfx2/source/doc/docinsert.cxx b/sfx2/source/doc/docinsert.cxx index ad262468313e..ca63af89aa8a 100644 --- a/sfx2/source/doc/docinsert.cxx +++ b/sfx2/source/doc/docinsert.cxx @@ -108,7 +108,7 @@ SfxMedium* DocumentInserter::CreateMedium(char const*const pFallbackHack) DBG_ASSERT( m_pURLList.size() == 1, "DocumentInserter::CreateMedium(): invalid URL list count" ); pMedium.reset(new SfxMedium( m_pURLList[0], SFX_STREAM_READONLY, - SfxGetpApp()->GetFilterMatcher().GetFilter4FilterName( m_sFilter ), m_pItemSet )); + SfxGetpApp()->GetFilterMatcher().GetFilter4FilterName( m_sFilter ), std::unique_ptr<SfxItemSet>(m_pItemSet) )); pMedium->UseInteractionHandler( true ); std::unique_ptr<SfxFilterMatcher> pMatcher; if ( !m_sDocFactory.isEmpty() ) @@ -145,7 +145,7 @@ SfxMediumList* DocumentInserter::CreateMediumList() { SfxMedium* pMedium = new SfxMedium( url, SFX_STREAM_READONLY, - SfxGetpApp()->GetFilterMatcher().GetFilter4FilterName( m_sFilter ), m_pItemSet ); + SfxGetpApp()->GetFilterMatcher().GetFilter4FilterName( m_sFilter ), std::unique_ptr<SfxItemSet>(m_pItemSet) ); pMedium->UseInteractionHandler( true ); diff --git a/sfx2/source/doc/new.cxx b/sfx2/source/doc/new.cxx index 36d91c3bb379..b6a78c03bf7a 100644 --- a/sfx2/source/doc/new.cxx +++ b/sfx2/source/doc/new.cxx @@ -147,10 +147,10 @@ IMPL_LINK_NOARG(SfxNewFileDialog, Update, Timer*, void) { SfxErrorContext eEC(ERRCTX_SFX_LOADTEMPLATE, m_xDialog.get()); SfxApplication *pSfxApp = SfxGetpApp(); - SfxItemSet* pSet = new SfxAllItemSet(pSfxApp->GetPool()); + std::unique_ptr<SfxItemSet> pSet(new SfxAllItemSet(pSfxApp->GetPool())); pSet->Put(SfxBoolItem(SID_TEMPLATE, true)); pSet->Put(SfxBoolItem(SID_PREVIEW, true)); - ErrCode lErr = pSfxApp->LoadTemplate(m_xDocShell, aFileName, pSet); + ErrCode lErr = pSfxApp->LoadTemplate(m_xDocShell, aFileName, std::move(pSet)); if (lErr) ErrorHandler::HandleError(lErr); if (!m_xDocShell.Is()) diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx index 2779a5a9b9d9..3eba938736ab 100644 --- a/sfx2/source/doc/objstor.cxx +++ b/sfx2/source/doc/objstor.cxx @@ -2512,7 +2512,7 @@ bool SfxObjectShell::DoSave_Impl( const SfxItemSet* pArgs ) // copy the original itemset, but remove the "version" item, because pMediumTmp // is a new medium "from scratch", so no version should be stored into it - SfxItemSet* pSet = new SfxAllItemSet(*pRetrMedium->GetItemSet()); + std::unique_ptr<SfxItemSet> pSet(new SfxAllItemSet(*pRetrMedium->GetItemSet())); pSet->ClearItem( SID_VERSION ); pSet->ClearItem( SID_DOC_BASEURL ); @@ -2531,7 +2531,7 @@ bool SfxObjectShell::DoSave_Impl( const SfxItemSet* pArgs ) // create a medium as a copy; this medium is only for writing, because it // uses the same name as the original one writing is done through a copy, // that will be transferred to the target (of course after calling HandsOff) - SfxMedium* pMediumTmp = new SfxMedium( pRetrMedium->GetName(), pRetrMedium->GetOpenMode(), pFilter, pSet ); + SfxMedium* pMediumTmp = new SfxMedium( pRetrMedium->GetName(), pRetrMedium->GetOpenMode(), pFilter, std::move(pSet) ); pMediumTmp->SetInCheckIn( pRetrMedium->IsInCheckIn( ) ); pMediumTmp->SetLongName( pRetrMedium->GetLongName() ); if ( pMediumTmp->GetErrorCode() != ERRCODE_NONE ) @@ -2771,7 +2771,7 @@ bool SfxObjectShell::CommonSaveAs_Impl(const INetURLObject& aURL, const OUString bool SfxObjectShell::PreDoSaveAs_Impl(const OUString& rFileName, const OUString& aFilterName, SfxItemSet const & rItemSet) { // copy all items stored in the itemset of the current medium - SfxAllItemSet* pMergedParams = new SfxAllItemSet( *pMedium->GetItemSet() ); + std::unique_ptr<SfxAllItemSet> pMergedParams(new SfxAllItemSet( *pMedium->GetItemSet() )); // in "SaveAs" title and password will be cleared ( maybe the new itemset contains new values, otherwise they will be empty ) pMergedParams->ClearItem( SID_ENCRYPTIONDATA ); @@ -2803,16 +2803,17 @@ bool SfxObjectShell::PreDoSaveAs_Impl(const OUString& rFileName, const OUString& pMergedParams->ClearItem( SID_DOC_SALVAGE ); // create a medium for the target URL - SfxMedium *pNewFile = new SfxMedium( rFileName, StreamMode::READWRITE | StreamMode::SHARE_DENYWRITE | StreamMode::TRUNC, nullptr, pMergedParams ); + auto pMergedParamsTmp = pMergedParams.get(); + SfxMedium *pNewFile = new SfxMedium( rFileName, StreamMode::READWRITE | StreamMode::SHARE_DENYWRITE | StreamMode::TRUNC, nullptr, std::move(pMergedParams) ); - const SfxBoolItem* pNoFileSync = pMergedParams->GetItem<SfxBoolItem>(SID_NO_FILE_SYNC, false); + const SfxBoolItem* pNoFileSync = pMergedParamsTmp->GetItem<SfxBoolItem>(SID_NO_FILE_SYNC, false); if (pNoFileSync && pNoFileSync->GetValue()) pNewFile->DisableFileSync(true); bool bUseThumbnailSave = IsUseThumbnailSave(); comphelper::ScopeGuard aThumbnailGuard( [this, bUseThumbnailSave] { this->SetUseThumbnailSave(bUseThumbnailSave); }); - const SfxBoolItem* pNoThumbnail = pMergedParams->GetItem<SfxBoolItem>(SID_NO_THUMBNAIL, false); + const SfxBoolItem* pNoThumbnail = pMergedParamsTmp->GetItem<SfxBoolItem>(SID_NO_THUMBNAIL, false); if (pNoThumbnail) // Thumbnail generation should be avoided just for this save. SetUseThumbnailSave(!pNoThumbnail->GetValue()); @@ -2834,7 +2835,7 @@ bool SfxObjectShell::PreDoSaveAs_Impl(const OUString& rFileName, const OUString& } // check if a "SaveTo" is wanted, no "SaveAs" - const SfxBoolItem* pSaveToItem = pMergedParams->GetItem<SfxBoolItem>(SID_SAVETO, false); + const SfxBoolItem* pSaveToItem = pMergedParamsTmp->GetItem<SfxBoolItem>(SID_SAVETO, false); bool bCopyTo = GetCreateMode() == SfxObjectCreateMode::EMBEDDED || (pSaveToItem && pSaveToItem->GetValue()); // distinguish between "Save" and "SaveAs" _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits