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 <t...@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; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits