[Libreoffice-commits] core.git: include/sfx2 sc/source sfx2/source starmath/source sw/inc sw/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Aug 16 10:09:31 UTC 2018


 include/sfx2/docinsert.hxx          |    4 ++--
 sc/source/ui/docshell/docsh4.cxx    |    2 +-
 sc/source/ui/miscdlgs/instbdlg.cxx  |    4 ++--
 sc/source/ui/miscdlgs/linkarea.cxx  |    5 +++--
 sfx2/source/doc/docinsert.cxx       |    4 ++--
 starmath/source/view.cxx            |    6 +++---
 sw/inc/view.hxx                     |    2 +-
 sw/source/uibase/inc/uivwimp.hxx    |    2 +-
 sw/source/uibase/uiview/uivwimp.cxx |    2 +-
 sw/source/uibase/uiview/view2.cxx   |   20 +++++++++-----------
 10 files changed, 25 insertions(+), 26 deletions(-)

New commits:
commit 13c78ceb25151b971e28f64d2ab931016eea7408
Author:     Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Tue Aug 14 16:20:34 2018 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Thu Aug 16 12:09:05 2018 +0200

    pass SfxMedium around by std::unique_ptr
    
    Change-Id: Ibde7b68d9248f80d5304991390a80742265f37b3
    Reviewed-on: https://gerrit.libreoffice.org/59031
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/include/sfx2/docinsert.hxx b/include/sfx2/docinsert.hxx
index bacf00ec47de..6befefcb31a3 100644
--- a/include/sfx2/docinsert.hxx
+++ b/include/sfx2/docinsert.hxx
@@ -22,6 +22,7 @@
 
 #include <rtl/ustring.hxx>
 #include <sfx2/dllapi.h>
+#include <sfx2/docfile.hxx>
 #include <vcl/errcode.hxx>
 #include <tools/link.hxx>
 #include <memory>
@@ -29,7 +30,6 @@
 
 namespace sfx2 { class FileDialogHelper; }
 namespace weld { class Window; }
-class SfxMedium;
 class SfxItemSet;
 enum class FileDialogFlags;
 
@@ -66,7 +66,7 @@ public:
     ~DocumentInserter();
 
     void                    StartExecuteModal( const Link<sfx2::FileDialogHelper*,void>& _rDialogClosedLink );
-    SfxMedium*              CreateMedium(char const* pFallbackHack = nullptr);
+    std::unique_ptr<SfxMedium> CreateMedium(char const* pFallbackHack = nullptr);
     SfxMediumList*          CreateMediumList();
 };
 
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 3d7b30aec367..155b6794eea6 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -2486,7 +2486,7 @@ IMPL_LINK( ScDocShell, DialogClosedHdl, sfx2::FileDialogHelper*, _pFileDlg, void
     if ( ERRCODE_NONE == _pFileDlg->GetError() )
     {
         sal_uInt16 nSlot = m_pImpl->pRequest->GetSlot();
-        SfxMedium* pMed = m_pImpl->pDocInserter->CreateMedium();
+        std::unique_ptr<SfxMedium> pMed = m_pImpl->pDocInserter->CreateMedium();
         // #i87094# If a .odt was selected pMed is NULL.
         if (pMed)
         {
diff --git a/sc/source/ui/miscdlgs/instbdlg.cxx b/sc/source/ui/miscdlgs/instbdlg.cxx
index 1c27d79e9398..381722983bab 100644
--- a/sc/source/ui/miscdlgs/instbdlg.cxx
+++ b/sc/source/ui/miscdlgs/instbdlg.cxx
@@ -305,7 +305,7 @@ IMPL_LINK( ScInsertTableDlg, DialogClosedHdl, sfx2::FileDialogHelper*, _pFileDlg
 {
     if ( ERRCODE_NONE == _pFileDlg->GetError() )
     {
-        SfxMedium* pMed = pDocInserter->CreateMedium();
+        std::unique_ptr<SfxMedium> pMed = pDocInserter->CreateMedium();
         if ( pMed )
         {
             //  ERRCTX_SFX_OPENDOC -> "Error loading document"
@@ -321,7 +321,7 @@ IMPL_LINK( ScInsertTableDlg, DialogClosedHdl, sfx2::FileDialogHelper*, _pFileDlg
 
             {
                 weld::WaitObject aWait(m_xDialog.get());
-                pDocShTables->DoLoad(pMed);
+                pDocShTables->DoLoad(pMed.release());
             }
 
             ErrCode nErr = pDocShTables->GetErrorCode();
diff --git a/sc/source/ui/miscdlgs/linkarea.cxx b/sc/source/ui/miscdlgs/linkarea.cxx
index 002bf482fd7e..e8eb369d39bc 100644
--- a/sc/source/ui/miscdlgs/linkarea.cxx
+++ b/sc/source/ui/miscdlgs/linkarea.cxx
@@ -179,7 +179,7 @@ IMPL_LINK( ScLinkedAreaDlg, DialogClosedHdl, sfx2::FileDialogHelper*, _pFileDlg,
     if ( _pFileDlg->GetError() != ERRCODE_NONE )
         return;
 
-    SfxMedium* pMed = m_xDocInserter->CreateMedium();
+    std::unique_ptr<SfxMedium> pMed = m_xDocInserter->CreateMedium();
     if ( pMed )
     {
         weld::WaitObject aWait(m_xDialog.get());
@@ -207,7 +207,7 @@ IMPL_LINK( ScLinkedAreaDlg, DialogClosedHdl, sfx2::FileDialogHelper*, _pFileDlg,
 
         m_pSourceShell = new ScDocShell;
         aSourceRef = m_pSourceShell;
-        m_pSourceShell->DoLoad( pMed );
+        m_pSourceShell->DoLoad( pMed.get() );
 
         ErrCode nErr = m_pSourceShell->GetErrorCode();
         if (nErr)
@@ -225,6 +225,7 @@ IMPL_LINK( ScLinkedAreaDlg, DialogClosedHdl, sfx2::FileDialogHelper*, _pFileDlg,
 
             m_xCbUrl->SetText(EMPTY_OUSTRING);
         }
+        pMed.release(); // DoLoad takes ownership
     }
 
     UpdateSourceRanges();
diff --git a/sfx2/source/doc/docinsert.cxx b/sfx2/source/doc/docinsert.cxx
index ca63af89aa8a..012cbcc02651 100644
--- a/sfx2/source/doc/docinsert.cxx
+++ b/sfx2/source/doc/docinsert.cxx
@@ -100,7 +100,7 @@ void DocumentInserter::StartExecuteModal( const Link<sfx2::FileDialogHelper*,voi
     m_pFileDlg->StartExecuteModal( LINK( this, DocumentInserter, DialogClosedHdl ) );
 }
 
-SfxMedium* DocumentInserter::CreateMedium(char const*const pFallbackHack)
+std::unique_ptr<SfxMedium> DocumentInserter::CreateMedium(char const*const pFallbackHack)
 {
     std::unique_ptr<SfxMedium> pMedium;
     if (!m_nError && m_pItemSet && !m_pURLList.empty())
@@ -133,7 +133,7 @@ SfxMedium* DocumentInserter::CreateMedium(char const*const pFallbackHack)
             pMedium.reset();
     }
 
-    return pMedium.release();
+    return pMedium;
 }
 
 SfxMediumList* DocumentInserter::CreateMediumList()
diff --git a/starmath/source/view.cxx b/starmath/source/view.cxx
index 6270bca09777..f817343dd5e0 100644
--- a/starmath/source/view.cxx
+++ b/starmath/source/view.cxx
@@ -1953,15 +1953,15 @@ IMPL_LINK( SmViewShell, DialogClosedHdl, sfx2::FileDialogHelper*, _pFileDlg, voi
 
     if ( ERRCODE_NONE == _pFileDlg->GetError() )
     {
-        SfxMedium* pMedium = mpImpl->pDocInserter->CreateMedium();
+        std::unique_ptr<SfxMedium> pMedium = mpImpl->pDocInserter->CreateMedium();
 
-        if ( pMedium != nullptr )
+        if ( pMedium )
         {
             if ( pMedium->IsStorage() )
                 Insert( *pMedium );
             else
                 InsertFrom( *pMedium );
-            delete pMedium;
+            pMedium.reset();
 
             SmDocShell* pDoc = GetDoc();
             pDoc->UpdateText();
diff --git a/sw/inc/view.hxx b/sw/inc/view.hxx
index 7f8b78e674f4..c2543d6e463b 100644
--- a/sw/inc/view.hxx
+++ b/sw/inc/view.hxx
@@ -583,7 +583,7 @@ public:
                     const OUString& rFilterName, sal_Int16 nVersion = 0 );
 
     void ExecuteInsertDoc( SfxRequest& rRequest, const SfxPoolItem* pItem );
-    long InsertMedium( sal_uInt16 nSlotId, SfxMedium* pMedium, sal_Int16 nVersion );
+    long InsertMedium( sal_uInt16 nSlotId, std::unique_ptr<SfxMedium> pMedium, sal_Int16 nVersion );
     DECL_LINK( DialogClosedHdl, sfx2::FileDialogHelper *, void );
 
     // status methods for clipboard.
diff --git a/sw/source/uibase/inc/uivwimp.hxx b/sw/source/uibase/inc/uivwimp.hxx
index 67c90d732ea9..44b7b3f5cca5 100644
--- a/sw/source/uibase/inc/uivwimp.hxx
+++ b/sw/source/uibase/inc/uivwimp.hxx
@@ -159,7 +159,7 @@ public:
                                 const Link<sfx2::FileDialogHelper*,void>& rEndDialogHdl,
                                 const sal_uInt16 nSlotId
                             );
-    SfxMedium*              CreateMedium();
+    std::unique_ptr<SfxMedium> CreateMedium();
     void                    InitRequest( const SfxRequest& rRequest );
 
     SfxRequest*      GetRequest() const { return m_pRequest.get(); }
diff --git a/sw/source/uibase/uiview/uivwimp.cxx b/sw/source/uibase/uiview/uivwimp.cxx
index f626480715e1..e36cbc5c963d 100644
--- a/sw/source/uibase/uiview/uivwimp.cxx
+++ b/sw/source/uibase/uiview/uivwimp.cxx
@@ -265,7 +265,7 @@ void SwView_Impl::StartDocumentInserter(
     m_pDocInserter->StartExecuteModal( rEndDialogHdl );
 }
 
-SfxMedium* SwView_Impl::CreateMedium()
+std::unique_ptr<SfxMedium> SwView_Impl::CreateMedium()
 {
     return m_pDocInserter->CreateMedium();
 }
diff --git a/sw/source/uibase/uiview/view2.cxx b/sw/source/uibase/uiview/view2.cxx
index f1866fc3ee16..06e3e8cc6bf0 100644
--- a/sw/source/uibase/uiview/view2.cxx
+++ b/sw/source/uibase/uiview/view2.cxx
@@ -2074,7 +2074,7 @@ void SwView::ExecuteInsertDoc( SfxRequest& rRequest, const SfxPoolItem* pItem )
 
 long SwView::InsertDoc( sal_uInt16 nSlotId, const OUString& rFileName, const OUString& rFilterName, sal_Int16 nVersion )
 {
-    SfxMedium* pMed = nullptr;
+    std::unique_ptr<SfxMedium> pMed;
     SwDocShell* pDocSh = GetDocShell();
 
     if( !rFileName.isEmpty() )
@@ -2083,17 +2083,17 @@ long SwView::InsertDoc( sal_uInt16 nSlotId, const OUString& rFileName, const OUS
         std::shared_ptr<const SfxFilter> pFilter = rFact.GetFilterContainer()->GetFilter4FilterName( rFilterName );
         if ( !pFilter )
         {
-            pMed = new SfxMedium(rFileName, StreamMode::READ, nullptr, nullptr );
+            pMed.reset(new SfxMedium(rFileName, StreamMode::READ, nullptr, nullptr ));
             SfxFilterMatcher aMatcher( rFact.GetFilterContainer()->GetName() );
             pMed->UseInteractionHandler( true );
             ErrCode nErr = aMatcher.GuessFilter(*pMed, pFilter, SfxFilterFlags::NONE);
             if ( nErr )
-                DELETEZ(pMed);
+                pMed.reset();
             else
                 pMed->SetFilter( pFilter );
         }
         else
-            pMed = new SfxMedium(rFileName, StreamMode::READ, pFilter, nullptr);
+            pMed.reset(new SfxMedium(rFileName, StreamMode::READ, pFilter, nullptr));
     }
     else
     {
@@ -2109,10 +2109,10 @@ long SwView::InsertDoc( sal_uInt16 nSlotId, const OUString& rFileName, const OUS
     if( !pMed )
         return -1;
 
-    return InsertMedium( nSlotId, pMed, nVersion );
+    return InsertMedium( nSlotId, std::move(pMed), nVersion );
 }
 
-long SwView::InsertMedium( sal_uInt16 nSlotId, SfxMedium* pMedium, sal_Int16 nVersion )
+long SwView::InsertMedium( sal_uInt16 nSlotId, std::unique_ptr<SfxMedium> pMedium, sal_Int16 nVersion )
 {
     bool bInsert = false, bCompare = false;
     long nFound = 0;
@@ -2145,11 +2145,10 @@ long SwView::InsertMedium( sal_uInt16 nSlotId, SfxMedium* pMedium, sal_Int16 nVe
 
         SfxObjectShellRef aRef( pDocSh );
 
-        ErrCode nError = SfxObjectShell::HandleFilter( pMedium, pDocSh );
+        ErrCode nError = SfxObjectShell::HandleFilter( pMedium.get(), pDocSh );
         // #i16722# aborted?
         if(nError != ERRCODE_NONE)
         {
-            delete pMedium;
             return -1;
         }
 
@@ -2250,7 +2249,6 @@ long SwView::InsertMedium( sal_uInt16 nSlotId, SfxMedium* pMedium, sal_Int16 nVe
         }
     }
 
-    delete pMedium;
     return nFound;
 }
 
@@ -2418,12 +2416,12 @@ IMPL_LINK( SwView, DialogClosedHdl, sfx2::FileDialogHelper*, _pFileDlg, void )
     if ( ERRCODE_NONE != _pFileDlg->GetError() )
         return;
 
-    SfxMedium* pMed = m_pViewImpl->CreateMedium();
+    std::unique_ptr<SfxMedium> pMed = m_pViewImpl->CreateMedium();
     if ( !pMed )
         return;
 
     const sal_uInt16 nSlot = m_pViewImpl->GetRequest()->GetSlot();
-    long nFound = InsertMedium( nSlot, pMed, m_pViewImpl->GetParam() );
+    long nFound = InsertMedium( nSlot, std::move(pMed), m_pViewImpl->GetParam() );
 
     if ( SID_INSERTDOC == nSlot )
     {


More information about the Libreoffice-commits mailing list