[Libreoffice-commits] core.git: sw/source

Takeshi Abe tabe at fixedpoint.jp
Mon Jun 16 17:55:14 PDT 2014


 sw/source/uibase/misc/glosdoc.cxx           |    3 +--
 sw/source/uibase/uiview/formatclipboard.cxx |   13 +++++--------
 sw/source/uibase/uiview/view0.cxx           |    6 +++---
 sw/source/uibase/uiview/view2.cxx           |    4 ++--
 sw/source/uibase/uno/SwXFilterOptions.cxx   |   12 +++++-------
 5 files changed, 16 insertions(+), 22 deletions(-)

New commits:
commit 3594780d3329c41f2800027dbb61b68767fb78b9
Author: Takeshi Abe <tabe at fixedpoint.jp>
Date:   Tue Jun 17 09:52:36 2014 +0900

    Avoid possible memory leaks in case of exceptions
    
    Change-Id: I22d22a924d33b91ba6894857ce56b0d920102b4b

diff --git a/sw/source/uibase/misc/glosdoc.cxx b/sw/source/uibase/misc/glosdoc.cxx
index 5548908..cab58a7 100644
--- a/sw/source/uibase/misc/glosdoc.cxx
+++ b/sw/source/uibase/misc/glosdoc.cxx
@@ -252,9 +252,8 @@ bool    SwGlossaries::RenameGroupDoc(
         m_GlosArr.push_back(rNewGroup);
     }
 
-    SwTextBlocks* pNewBlock = new SwTextBlocks( sNewFileURL );
+    boost::scoped_ptr<SwTextBlocks> pNewBlock(new SwTextBlocks( sNewFileURL ));
     pNewBlock->SetName(rNewTitle);
-    delete pNewBlock;
 
     return true;
 }
diff --git a/sw/source/uibase/uiview/formatclipboard.cxx b/sw/source/uibase/uiview/formatclipboard.cxx
index 5a06d66..cf81558 100644
--- a/sw/source/uibase/uiview/formatclipboard.cxx
+++ b/sw/source/uibase/uiview/formatclipboard.cxx
@@ -35,6 +35,7 @@
 #include <editeng/frmdiritem.hxx>
 #include <fmtpdsc.hxx>
 #include <fmtrowsplt.hxx>
+#include <boost/scoped_ptr.hpp>
 
 namespace
 {
@@ -509,8 +510,8 @@ void SwFormatClipboard::Paste( SwWrtShell& rWrtShell, SfxStyleSheetBasePool* pPo
         if ( m_pItemSet_ParAttr && m_pItemSet_ParAttr->Count() != 0 && !bNoParagraphFormats )
         {
             // temporary SfxItemSet
-            SfxItemSet* pTemplateItemSet = lcl_CreateEmptyItemSet(
-                    nSelectionType, *m_pItemSet_ParAttr->GetPool(), false);
+            boost::scoped_ptr<SfxItemSet> pTemplateItemSet(lcl_CreateEmptyItemSet(
+                    nSelectionType, *m_pItemSet_ParAttr->GetPool(), false));
             // no need to verify the existence of pTemplateItemSet as we
             // know that here the selection type is SEL_TXT
 
@@ -525,8 +526,6 @@ void SwFormatClipboard::Paste( SwWrtShell& rWrtShell, SfxStyleSheetBasePool* pPo
             // store the attributes in aItemVector in order not to apply them as
             // text automatic formatting attributes later in the code
             lcl_AppendSetItems( aItemVector, *pTemplateItemSet);
-
-            delete pTemplateItemSet;
         }
     }
 
@@ -544,8 +543,8 @@ void SwFormatClipboard::Paste( SwWrtShell& rWrtShell, SfxStyleSheetBasePool* pPo
         else
         {
             // temporary SfxItemSet
-            SfxItemSet* pTemplateItemSet = lcl_CreateEmptyItemSet(
-                    nSelectionType, *m_pItemSet_TxtAttr->GetPool(), true );
+            boost::scoped_ptr<SfxItemSet> pTemplateItemSet(lcl_CreateEmptyItemSet(
+                    nSelectionType, *m_pItemSet_TxtAttr->GetPool(), true ));
 
             if(pTemplateItemSet)
             {
@@ -561,8 +560,6 @@ void SwFormatClipboard::Paste( SwWrtShell& rWrtShell, SfxStyleSheetBasePool* pPo
                     rWrtShell.SetFlyFrmAttr(*pTemplateItemSet);
                 else if ( !bNoCharacterFormats )
                     rWrtShell.SetAttrSet(*pTemplateItemSet);
-
-                delete pTemplateItemSet;
             }
         }
     }
diff --git a/sw/source/uibase/uiview/view0.cxx b/sw/source/uibase/uiview/view0.cxx
index 8c1c950..4864bde 100644
--- a/sw/source/uibase/uiview/view0.cxx
+++ b/sw/source/uibase/uiview/view0.cxx
@@ -78,6 +78,7 @@ using namespace ::com::sun::star;
 #include <IDocumentSettingAccess.hxx>
 
 #include <unomid.h>
+#include <boost/scoped_ptr.hpp>
 
 SFX_IMPL_NAMED_VIEWFACTORY(SwView, "Default")
 {
@@ -351,7 +352,7 @@ void SwView::StateViewOptions(SfxItemSet &rSet)
 
 void SwView::ExecViewOptions(SfxRequest &rReq)
 {
-    SwViewOption* pOpt = new SwViewOption( *GetWrtShell().GetViewOptions() );
+    boost::scoped_ptr<SwViewOption> pOpt(new SwViewOption( *GetWrtShell().GetViewOptions() ));
     bool bModified = GetWrtShell().IsModified();
 
     int eState = STATE_TOGGLE;
@@ -550,7 +551,6 @@ void SwView::ExecViewOptions(SfxRequest &rReq)
         break;
 
     default:
-        delete pOpt;
         OSL_FAIL("wrong request method");
         return;
     }
@@ -591,7 +591,7 @@ void SwView::ExecViewOptions(SfxRequest &rReq)
         CalcVisArea( GetEditWin().GetOutputSizePixel() );
     rSh.LockView( bLockedView );
 
-    delete pOpt;
+    pOpt.reset();
     Invalidate(rReq.GetSlot());
     if(!pArgs)
         rReq.AppendItem(SfxBoolItem(nSlot, bFlag));
diff --git a/sw/source/uibase/uiview/view2.cxx b/sw/source/uibase/uiview/view2.cxx
index 854e653..3721878 100644
--- a/sw/source/uibase/uiview/view2.cxx
+++ b/sw/source/uibase/uiview/view2.cxx
@@ -2420,7 +2420,7 @@ void SwView::GenerateFormLetter(bool bUseCurrentDocument)
         // call documents and template dialog
         SfxApplication* pSfxApp = SFX_APP();
         Window* pTopWin = pSfxApp->GetTopWindow();
-        SvtDocumentTemplateDialog* pDocTemplDlg = new SvtDocumentTemplateDialog( pTopWin );
+        boost::scoped_ptr<SvtDocumentTemplateDialog> pDocTemplDlg(new SvtDocumentTemplateDialog( pTopWin ));
         pDocTemplDlg->SelectTemplateFolder();
 
         int nRet = pDocTemplDlg->Execute();
@@ -2435,7 +2435,7 @@ void SwView::GenerateFormLetter(bool bUseCurrentDocument)
             }
         }
 
-        delete pDocTemplDlg;
+        pDocTemplDlg.reset();
         if ( bNewWin )
             // after the destruction of the dialogue its parent comes to top,
             // but we want that the new document is on top
diff --git a/sw/source/uibase/uno/SwXFilterOptions.cxx b/sw/source/uibase/uno/SwXFilterOptions.cxx
index 166c2cf..d72d0de 100644
--- a/sw/source/uibase/uno/SwXFilterOptions.cxx
+++ b/sw/source/uibase/uno/SwXFilterOptions.cxx
@@ -32,6 +32,7 @@
 
 #include "swabstdlg.hxx"
 #include "dialog.hrc"
+#include <boost/scoped_ptr.hpp>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::ui::dialogs;
@@ -101,9 +102,9 @@ sal_Int16 SwXFilterOptions::execute() throw (uno::RuntimeException, std::excepti
 {
     sal_Int16 nRet = ui::dialogs::ExecutableDialogResults::CANCEL;
 
-    SvStream* pInStream = NULL;
+    boost::scoped_ptr<SvStream> pInStream;
     if ( xInputStream.is() )
-        pInStream = utl::UcbStreamHelper::CreateStream( xInputStream );
+        pInStream.reset(utl::UcbStreamHelper::CreateStream( xInputStream ));
 
     uno::Reference< XUnoTunnel > xTunnel(xModel, uno::UNO_QUERY);
     SwDocShell* pDocShell = 0;
@@ -119,8 +120,8 @@ sal_Int16 SwXFilterOptions::execute() throw (uno::RuntimeException, std::excepti
         SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
         OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
 
-        AbstractSwAsciiFilterDlg* pAsciiDlg = pFact->CreateSwAsciiFilterDlg(NULL, *pDocShell,
-            pInStream);
+        boost::scoped_ptr<AbstractSwAsciiFilterDlg> pAsciiDlg(pFact->CreateSwAsciiFilterDlg(NULL, *pDocShell,
+            pInStream.get()));
         OSL_ENSURE(pAsciiDlg, "Dialogdiet fail!");
         if(RET_OK == pAsciiDlg->Execute())
         {
@@ -129,11 +130,8 @@ sal_Int16 SwXFilterOptions::execute() throw (uno::RuntimeException, std::excepti
             aOptions.WriteUserData(sFilterOptions);
             nRet = ui::dialogs::ExecutableDialogResults::OK;
         }
-        delete pAsciiDlg;
     }
 
-    delete pInStream;
-
     return nRet;
 }
 


More information about the Libreoffice-commits mailing list