summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi Abe <tabe@fixedpoint.jp>2014-06-17 09:52:36 +0900
committerTakeshi Abe <tabe@fixedpoint.jp>2014-06-17 09:54:02 +0900
commit3594780d3329c41f2800027dbb61b68767fb78b9 (patch)
tree8eee5e7b74e6d7b38bb1af909c66db39e42e334f
parent6b5c0a5cb25fc0c7c673a9332c8d30b6efbb819b (diff)
Avoid possible memory leaks in case of exceptions
Change-Id: I22d22a924d33b91ba6894857ce56b0d920102b4b
-rw-r--r--sw/source/uibase/misc/glosdoc.cxx3
-rw-r--r--sw/source/uibase/uiview/formatclipboard.cxx13
-rw-r--r--sw/source/uibase/uiview/view0.cxx6
-rw-r--r--sw/source/uibase/uiview/view2.cxx4
-rw-r--r--sw/source/uibase/uno/SwXFilterOptions.cxx12
5 files changed, 16 insertions, 22 deletions
diff --git a/sw/source/uibase/misc/glosdoc.cxx b/sw/source/uibase/misc/glosdoc.cxx
index 55489082adea..cab58a74a2fc 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 5a06d660d372..cf81558ba8b5 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 8c1c9504b631..4864bde7840c 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 854e65355a50..372187827496 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 166c2cfe3e1e..d72d0def58ef 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;
}