Avoid possible memory leaks in case of exceptions

Change-Id: I22d22a924d33b91ba6894857ce56b0d920102b4b
This commit is contained in:
Takeshi Abe
2014-06-17 09:52:36 +09:00
parent 6b5c0a5cb2
commit 3594780d33
5 changed files with 16 additions and 22 deletions

View File

@@ -252,9 +252,8 @@ bool SwGlossaries::RenameGroupDoc(
m_GlosArr.push_back(rNewGroup); m_GlosArr.push_back(rNewGroup);
} }
SwTextBlocks* pNewBlock = new SwTextBlocks( sNewFileURL ); boost::scoped_ptr<SwTextBlocks> pNewBlock(new SwTextBlocks( sNewFileURL ));
pNewBlock->SetName(rNewTitle); pNewBlock->SetName(rNewTitle);
delete pNewBlock;
return true; return true;
} }

View File

@@ -35,6 +35,7 @@
#include <editeng/frmdiritem.hxx> #include <editeng/frmdiritem.hxx>
#include <fmtpdsc.hxx> #include <fmtpdsc.hxx>
#include <fmtrowsplt.hxx> #include <fmtrowsplt.hxx>
#include <boost/scoped_ptr.hpp>
namespace namespace
{ {
@@ -509,8 +510,8 @@ void SwFormatClipboard::Paste( SwWrtShell& rWrtShell, SfxStyleSheetBasePool* pPo
if ( m_pItemSet_ParAttr && m_pItemSet_ParAttr->Count() != 0 && !bNoParagraphFormats ) if ( m_pItemSet_ParAttr && m_pItemSet_ParAttr->Count() != 0 && !bNoParagraphFormats )
{ {
// temporary SfxItemSet // temporary SfxItemSet
SfxItemSet* pTemplateItemSet = lcl_CreateEmptyItemSet( boost::scoped_ptr<SfxItemSet> pTemplateItemSet(lcl_CreateEmptyItemSet(
nSelectionType, *m_pItemSet_ParAttr->GetPool(), false); nSelectionType, *m_pItemSet_ParAttr->GetPool(), false));
// no need to verify the existence of pTemplateItemSet as we // no need to verify the existence of pTemplateItemSet as we
// know that here the selection type is SEL_TXT // 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 // store the attributes in aItemVector in order not to apply them as
// text automatic formatting attributes later in the code // text automatic formatting attributes later in the code
lcl_AppendSetItems( aItemVector, *pTemplateItemSet); lcl_AppendSetItems( aItemVector, *pTemplateItemSet);
delete pTemplateItemSet;
} }
} }
@@ -544,8 +543,8 @@ void SwFormatClipboard::Paste( SwWrtShell& rWrtShell, SfxStyleSheetBasePool* pPo
else else
{ {
// temporary SfxItemSet // temporary SfxItemSet
SfxItemSet* pTemplateItemSet = lcl_CreateEmptyItemSet( boost::scoped_ptr<SfxItemSet> pTemplateItemSet(lcl_CreateEmptyItemSet(
nSelectionType, *m_pItemSet_TxtAttr->GetPool(), true ); nSelectionType, *m_pItemSet_TxtAttr->GetPool(), true ));
if(pTemplateItemSet) if(pTemplateItemSet)
{ {
@@ -561,8 +560,6 @@ void SwFormatClipboard::Paste( SwWrtShell& rWrtShell, SfxStyleSheetBasePool* pPo
rWrtShell.SetFlyFrmAttr(*pTemplateItemSet); rWrtShell.SetFlyFrmAttr(*pTemplateItemSet);
else if ( !bNoCharacterFormats ) else if ( !bNoCharacterFormats )
rWrtShell.SetAttrSet(*pTemplateItemSet); rWrtShell.SetAttrSet(*pTemplateItemSet);
delete pTemplateItemSet;
} }
} }
} }

View File

@@ -78,6 +78,7 @@ using namespace ::com::sun::star;
#include <IDocumentSettingAccess.hxx> #include <IDocumentSettingAccess.hxx>
#include <unomid.h> #include <unomid.h>
#include <boost/scoped_ptr.hpp>
SFX_IMPL_NAMED_VIEWFACTORY(SwView, "Default") SFX_IMPL_NAMED_VIEWFACTORY(SwView, "Default")
{ {
@@ -351,7 +352,7 @@ void SwView::StateViewOptions(SfxItemSet &rSet)
void SwView::ExecViewOptions(SfxRequest &rReq) void SwView::ExecViewOptions(SfxRequest &rReq)
{ {
SwViewOption* pOpt = new SwViewOption( *GetWrtShell().GetViewOptions() ); boost::scoped_ptr<SwViewOption> pOpt(new SwViewOption( *GetWrtShell().GetViewOptions() ));
bool bModified = GetWrtShell().IsModified(); bool bModified = GetWrtShell().IsModified();
int eState = STATE_TOGGLE; int eState = STATE_TOGGLE;
@@ -550,7 +551,6 @@ void SwView::ExecViewOptions(SfxRequest &rReq)
break; break;
default: default:
delete pOpt;
OSL_FAIL("wrong request method"); OSL_FAIL("wrong request method");
return; return;
} }
@@ -591,7 +591,7 @@ void SwView::ExecViewOptions(SfxRequest &rReq)
CalcVisArea( GetEditWin().GetOutputSizePixel() ); CalcVisArea( GetEditWin().GetOutputSizePixel() );
rSh.LockView( bLockedView ); rSh.LockView( bLockedView );
delete pOpt; pOpt.reset();
Invalidate(rReq.GetSlot()); Invalidate(rReq.GetSlot());
if(!pArgs) if(!pArgs)
rReq.AppendItem(SfxBoolItem(nSlot, bFlag)); rReq.AppendItem(SfxBoolItem(nSlot, bFlag));

View File

@@ -2420,7 +2420,7 @@ void SwView::GenerateFormLetter(bool bUseCurrentDocument)
// call documents and template dialog // call documents and template dialog
SfxApplication* pSfxApp = SFX_APP(); SfxApplication* pSfxApp = SFX_APP();
Window* pTopWin = pSfxApp->GetTopWindow(); Window* pTopWin = pSfxApp->GetTopWindow();
SvtDocumentTemplateDialog* pDocTemplDlg = new SvtDocumentTemplateDialog( pTopWin ); boost::scoped_ptr<SvtDocumentTemplateDialog> pDocTemplDlg(new SvtDocumentTemplateDialog( pTopWin ));
pDocTemplDlg->SelectTemplateFolder(); pDocTemplDlg->SelectTemplateFolder();
int nRet = pDocTemplDlg->Execute(); int nRet = pDocTemplDlg->Execute();
@@ -2435,7 +2435,7 @@ void SwView::GenerateFormLetter(bool bUseCurrentDocument)
} }
} }
delete pDocTemplDlg; pDocTemplDlg.reset();
if ( bNewWin ) if ( bNewWin )
// after the destruction of the dialogue its parent comes to top, // after the destruction of the dialogue its parent comes to top,
// but we want that the new document is on top // but we want that the new document is on top

View File

@@ -32,6 +32,7 @@
#include "swabstdlg.hxx" #include "swabstdlg.hxx"
#include "dialog.hrc" #include "dialog.hrc"
#include <boost/scoped_ptr.hpp>
using namespace ::com::sun::star; using namespace ::com::sun::star;
using namespace ::com::sun::star::ui::dialogs; 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; sal_Int16 nRet = ui::dialogs::ExecutableDialogResults::CANCEL;
SvStream* pInStream = NULL; boost::scoped_ptr<SvStream> pInStream;
if ( xInputStream.is() ) if ( xInputStream.is() )
pInStream = utl::UcbStreamHelper::CreateStream( xInputStream ); pInStream.reset(utl::UcbStreamHelper::CreateStream( xInputStream ));
uno::Reference< XUnoTunnel > xTunnel(xModel, uno::UNO_QUERY); uno::Reference< XUnoTunnel > xTunnel(xModel, uno::UNO_QUERY);
SwDocShell* pDocShell = 0; SwDocShell* pDocShell = 0;
@@ -119,8 +120,8 @@ sal_Int16 SwXFilterOptions::execute() throw (uno::RuntimeException, std::excepti
SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create(); SwAbstractDialogFactory* pFact = SwAbstractDialogFactory::Create();
OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!"); OSL_ENSURE(pFact, "SwAbstractDialogFactory fail!");
AbstractSwAsciiFilterDlg* pAsciiDlg = pFact->CreateSwAsciiFilterDlg(NULL, *pDocShell, boost::scoped_ptr<AbstractSwAsciiFilterDlg> pAsciiDlg(pFact->CreateSwAsciiFilterDlg(NULL, *pDocShell,
pInStream); pInStream.get()));
OSL_ENSURE(pAsciiDlg, "Dialogdiet fail!"); OSL_ENSURE(pAsciiDlg, "Dialogdiet fail!");
if(RET_OK == pAsciiDlg->Execute()) if(RET_OK == pAsciiDlg->Execute())
{ {
@@ -129,11 +130,8 @@ sal_Int16 SwXFilterOptions::execute() throw (uno::RuntimeException, std::excepti
aOptions.WriteUserData(sFilterOptions); aOptions.WriteUserData(sFilterOptions);
nRet = ui::dialogs::ExecutableDialogResults::OK; nRet = ui::dialogs::ExecutableDialogResults::OK;
} }
delete pAsciiDlg;
} }
delete pInStream;
return nRet; return nRet;
} }