summaryrefslogtreecommitdiff
path: root/cui
diff options
context:
space:
mode:
authorTakeshi Abe <tabe@fixedpoint.jp>2014-08-02 19:43:47 +0900
committerTakeshi Abe <tabe@fixedpoint.jp>2014-08-02 19:44:36 +0900
commitfbc7cfe515169766f4436500987100b3075378dc (patch)
treef5c7264cc09bd099a57150abc0925e869f0052d3 /cui
parente9cdb11be43f3f35ee9f4bcf5f6c8deda392b4d9 (diff)
Avoid possible memory leaks in case of exceptions
Change-Id: I55f418ebcb96b44ab423a676881ffe8f455a923d
Diffstat (limited to 'cui')
-rw-r--r--cui/source/tabpages/tpcolor.cxx15
-rw-r--r--cui/source/tabpages/tpgradnt.cxx40
-rw-r--r--cui/source/tabpages/tphatch.cxx41
3 files changed, 43 insertions, 53 deletions
diff --git a/cui/source/tabpages/tpcolor.cxx b/cui/source/tabpages/tpcolor.cxx
index 9a1218a266ef..24ca8215dbbc 100644
--- a/cui/source/tabpages/tpcolor.cxx
+++ b/cui/source/tabpages/tpcolor.cxx
@@ -46,6 +46,7 @@
#include <cuitabline.hxx>
#include <svx/dialmgr.hxx>
#include <svx/dialogs.hrc>
+#include <boost/scoped_ptr.hpp>
using namespace com::sun::star;
@@ -511,10 +512,10 @@ long SvxColorTabPage::CheckChanges_Impl()
{
ResMgr& rMgr = CUI_MGR();
Image aWarningBoxImage = WarningBox::GetStandardImage();
- SvxMessDialog* aMessDlg = new SvxMessDialog(GetParentDialog(),
+ boost::scoped_ptr<SvxMessDialog> aMessDlg(new SvxMessDialog(GetParentDialog(),
SVX_RESSTR( RID_SVXSTR_COLOR ),
ResId( RID_SVXSTR_ASK_CHANGE_COLOR, rMgr ),
- &aWarningBoxImage );
+ &aWarningBoxImage ));
aMessDlg->SetButtonText( MESS_BTN_1,
ResId( RID_SVXSTR_CHANGE, rMgr ) );
aMessDlg->SetButtonText( MESS_BTN_2,
@@ -542,7 +543,6 @@ long SvxColorTabPage::CheckChanges_Impl()
case RET_CANCEL:
break;
}
- delete aMessDlg;
}
}
if( nDlgType == 0 ) // area dialog
@@ -685,7 +685,7 @@ IMPL_LINK_NOARG(SvxColorTabPage, ClickAddHdl_Impl)
aWarningBox.Execute();
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
- AbstractSvxNameDialog* pDlg = pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc );
+ boost::scoped_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc ));
bool bLoop = true;
while ( !bDifferent && bLoop && pDlg->Execute() == RET_OK )
@@ -704,7 +704,6 @@ IMPL_LINK_NOARG(SvxColorTabPage, ClickAddHdl_Impl)
else
aWarningBox.Execute();
}
- delete( pDlg );
}
// if not existing the entry is entered
@@ -757,7 +756,7 @@ IMPL_LINK_NOARG(SvxColorTabPage, ClickModifyHdl_Impl)
aWarningBox.Execute();
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
- AbstractSvxNameDialog* pDlg = pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc );
+ boost::scoped_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc ));
bool bLoop = true;
while ( !bDifferent && bLoop && pDlg->Execute() == RET_OK )
@@ -774,7 +773,6 @@ IMPL_LINK_NOARG(SvxColorTabPage, ClickModifyHdl_Impl)
else
aWarningBox.Execute();
}
- delete( pDlg );
}
// if not existing the entry is entered
@@ -803,7 +801,7 @@ IMPL_LINK_NOARG(SvxColorTabPage, ClickModifyHdl_Impl)
IMPL_LINK_NOARG(SvxColorTabPage, ClickWorkOnHdl_Impl)
{
- SvColorDialog* pColorDlg = new SvColorDialog( GetParentDialog() );
+ boost::scoped_ptr<SvColorDialog> pColorDlg(new SvColorDialog( GetParentDialog() ));
pColorDlg->SetColor (aCurrentColor);
pColorDlg->SetMode( svtools::ColorPickerMode_MODIFY );
@@ -836,7 +834,6 @@ IMPL_LINK_NOARG(SvxColorTabPage, ClickWorkOnHdl_Impl)
m_pCtlPreviewNew->Invalidate();
}
- delete( pColorDlg );
return 0;
}
diff --git a/cui/source/tabpages/tpgradnt.cxx b/cui/source/tabpages/tpgradnt.cxx
index 5314b3799c01..38c502cd7b55 100644
--- a/cui/source/tabpages/tpgradnt.cxx
+++ b/cui/source/tabpages/tpgradnt.cxx
@@ -41,6 +41,7 @@
#include <svx/dialmgr.hxx>
#include <svx/dialogs.hrc>
#include "paragrph.hrc"
+#include <boost/scoped_ptr.hpp>
using namespace com::sun::star;
@@ -263,10 +264,10 @@ long SvxGradientTabPage::CheckChanges_Impl()
{
ResMgr& rMgr = CUI_MGR();
Image aWarningBoxImage = WarningBox::GetStandardImage();
- SvxMessDialog* aMessDlg = new SvxMessDialog(GetParentDialog(),
+ boost::scoped_ptr<SvxMessDialog> aMessDlg(new SvxMessDialog(GetParentDialog(),
SVX_RESSTR( RID_SVXSTR_GRADIENT ),
CUI_RESSTR( RID_SVXSTR_ASK_CHANGE_GRADIENT ),
- &aWarningBoxImage );
+ &aWarningBoxImage ));
DBG_ASSERT(aMessDlg, "Dialog creation failed!");
aMessDlg->SetButtonText( MESS_BTN_1,
OUString( ResId( RID_SVXSTR_CHANGE, rMgr ) ) );
@@ -295,7 +296,6 @@ long SvxGradientTabPage::CheckChanges_Impl()
case RET_CANCEL:
break;
}
- delete aMessDlg;
}
}
nPos = m_pLbGradients->GetSelectEntryPos();
@@ -314,19 +314,19 @@ bool SvxGradientTabPage::FillItemSet( SfxItemSet* rSet )
{
// CheckChanges(); <-- duplicate inquiry ?
- XGradient* pXGradient = NULL;
+ boost::scoped_ptr<XGradient> pXGradient;
OUString aString;
sal_Int32 nPos = m_pLbGradients->GetSelectEntryPos();
if( nPos != LISTBOX_ENTRY_NOTFOUND )
{
- pXGradient = new XGradient( pGradientList->GetGradient( nPos )->GetGradient() );
+ pXGradient.reset(new XGradient( pGradientList->GetGradient( nPos )->GetGradient() ));
aString = m_pLbGradients->GetSelectEntry();
}
else
// gradient was passed (unidentified)
{
- pXGradient = new XGradient( m_pLbColorFrom->GetSelectEntryColor(),
+ pXGradient.reset(new XGradient( m_pLbColorFrom->GetSelectEntryColor(),
m_pLbColorTo->GetSelectEntryColor(),
(XGradientStyle) m_pLbGradientType->GetSelectEntryPos(),
static_cast<long>(m_pMtrAngle->GetValue() * 10), // should be changed in resource
@@ -334,13 +334,11 @@ bool SvxGradientTabPage::FillItemSet( SfxItemSet* rSet )
(sal_uInt16) m_pMtrCenterY->GetValue(),
(sal_uInt16) m_pMtrBorder->GetValue(),
(sal_uInt16) m_pMtrColorFrom->GetValue(),
- (sal_uInt16) m_pMtrColorTo->GetValue() );
+ (sal_uInt16) m_pMtrColorTo->GetValue() ));
}
DBG_ASSERT( pXGradient, "XGradient konnte nicht erzeugt werden" );
rSet->Put( XFillStyleItem( drawing::FillStyle_GRADIENT ) );
rSet->Put( XFillGradientItem( aString, *pXGradient ) );
-
- delete pXGradient;
}
return true;
}
@@ -430,9 +428,9 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ClickAddHdl_Impl)
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
DBG_ASSERT(pFact, "Dialog creation failed!");
- AbstractSvxNameDialog* pDlg = pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc );
+ boost::scoped_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc ));
DBG_ASSERT(pDlg, "Dialog creation failed!");
- MessageDialog* pWarnBox = NULL;
+ boost::scoped_ptr<MessageDialog> pWarnBox;
sal_uInt16 nError = 1;
while( pDlg->Execute() == RET_OK )
@@ -453,16 +451,16 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ClickAddHdl_Impl)
if( !pWarnBox )
{
- pWarnBox = new MessageDialog( GetParentDialog()
+ pWarnBox.reset(new MessageDialog( GetParentDialog()
,"DuplicateNameDialog"
- ,"cui/ui/queryduplicatedialog.ui");
+ ,"cui/ui/queryduplicatedialog.ui"));
}
if( pWarnBox->Execute() != RET_OK )
break;
}
- delete pDlg;
- delete pWarnBox;
+ pDlg.reset();
+ pWarnBox.reset();
if( !nError )
{
@@ -521,7 +519,7 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ClickModifyHdl_Impl)
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
DBG_ASSERT(pFact, "Dialog creation failed!");
- AbstractSvxNameDialog* pDlg = pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc );
+ boost::scoped_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc ));
DBG_ASSERT(pDlg, "Dialog creation failed!");
long nCount = pGradientList->Count();
@@ -572,7 +570,6 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ClickModifyHdl_Impl)
}
}
- delete pDlg;
}
return 0L;
}
@@ -772,11 +769,11 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ClickSaveHdl_Impl)
IMPL_LINK_NOARG(SvxGradientTabPage, ChangeGradientHdl_Impl)
{
- XGradient* pGradient = NULL;
+ boost::scoped_ptr<XGradient> pGradient;
int nPos = m_pLbGradients->GetSelectEntryPos();
if( nPos != LISTBOX_ENTRY_NOTFOUND )
- pGradient = new XGradient( ( (XGradientEntry*) pGradientList->GetGradient( nPos ) )->GetGradient() );
+ pGradient.reset(new XGradient( ( (XGradientEntry*) pGradientList->GetGradient( nPos ) )->GetGradient() ));
else
{
const SfxPoolItem* pPoolItem = NULL;
@@ -785,7 +782,7 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ChangeGradientHdl_Impl)
if( ( drawing::FillStyle_GRADIENT == (drawing::FillStyle) ( ( const XFillStyleItem* ) pPoolItem )->GetValue() ) &&
( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLGRADIENT ), true, &pPoolItem ) ) )
{
- pGradient = new XGradient( ( ( const XFillGradientItem* ) pPoolItem )->GetGradientValue() );
+ pGradient.reset(new XGradient( ( ( const XFillGradientItem* ) pPoolItem )->GetGradientValue() ));
}
}
if( !pGradient )
@@ -793,7 +790,7 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ChangeGradientHdl_Impl)
m_pLbGradients->SelectEntryPos( 0 );
nPos = m_pLbGradients->GetSelectEntryPos();
if( nPos != LISTBOX_ENTRY_NOTFOUND )
- pGradient = new XGradient( ( (XGradientEntry*) pGradientList->GetGradient( nPos ) )->GetGradient() );
+ pGradient.reset(new XGradient( ( (XGradientEntry*) pGradientList->GetGradient( nPos ) )->GetGradient() ));
}
}
@@ -838,7 +835,6 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ChangeGradientHdl_Impl)
m_pCtlPreview->SetAttributes( aXFillAttr.GetItemSet() );
m_pCtlPreview->Invalidate();
- delete pGradient;
}
return 0L;
}
diff --git a/cui/source/tabpages/tphatch.cxx b/cui/source/tabpages/tphatch.cxx
index f1ebdc6f0fe5..501bd6720839 100644
--- a/cui/source/tabpages/tphatch.cxx
+++ b/cui/source/tabpages/tphatch.cxx
@@ -43,6 +43,7 @@
#include <svx/dialmgr.hxx>
#include "paragrph.hrc"
#include <svx/dialogs.hrc>
+#include <boost/scoped_ptr.hpp>
using namespace com::sun::star;
@@ -240,10 +241,10 @@ long SvxHatchTabPage::CheckChanges_Impl()
{
ResMgr& rMgr = CUI_MGR();
Image aWarningBoxImage = WarningBox::GetStandardImage();
- SvxMessDialog* aMessDlg = new SvxMessDialog(GetParentDialog(),
+ boost::scoped_ptr<SvxMessDialog> aMessDlg(new SvxMessDialog(GetParentDialog(),
SVX_RESSTR( RID_SVXSTR_HATCH ),
CUI_RESSTR( RID_SVXSTR_ASK_CHANGE_HATCH ),
- &aWarningBoxImage );
+ &aWarningBoxImage ));
DBG_ASSERT(aMessDlg, "Dialog creation failed!");
aMessDlg->SetButtonText( MESS_BTN_1,
OUString( ResId( RID_SVXSTR_CHANGE, rMgr ) ) );
@@ -269,7 +270,6 @@ long SvxHatchTabPage::CheckChanges_Impl()
case RET_CANCEL:
break;
}
- delete aMessDlg;
}
sal_Int32 nPos = m_pLbHatchings->GetSelectEntryPos();
@@ -288,27 +288,25 @@ bool SvxHatchTabPage::FillItemSet( SfxItemSet* rSet )
{
// CheckChanges(); <-- duplicate inquiry ?
- XHatch* pXHatch = NULL;
+ boost::scoped_ptr<XHatch> pXHatch;
OUString aString;
sal_Int32 nPos = m_pLbHatchings->GetSelectEntryPos();
if( nPos != LISTBOX_ENTRY_NOTFOUND )
{
- pXHatch = new XHatch( pHatchingList->GetHatch( nPos )->GetHatch() );
+ pXHatch.reset(new XHatch( pHatchingList->GetHatch( nPos )->GetHatch() ));
aString = m_pLbHatchings->GetSelectEntry();
}
// gradient has been (unidentifiedly) passed
else
{
- pXHatch = new XHatch( m_pLbLineColor->GetSelectEntryColor(),
+ pXHatch.reset(new XHatch( m_pLbLineColor->GetSelectEntryColor(),
(XHatchStyle) m_pLbLineType->GetSelectEntryPos(),
GetCoreValue( *m_pMtrDistance, ePoolUnit ),
- static_cast<long>(m_pMtrAngle->GetValue() * 10) );
+ static_cast<long>(m_pMtrAngle->GetValue() * 10) ));
}
DBG_ASSERT( pXHatch, "XHatch konnte nicht erzeugt werden" );
rSet->Put( XFillStyleItem( drawing::FillStyle_HATCH ) );
rSet->Put( XFillHatchItem( aString, *pXHatch ) );
-
- delete pXHatch;
}
}
return true;
@@ -385,11 +383,11 @@ IMPL_LINK( SvxHatchTabPage, ModifiedHdl_Impl, void *, p )
IMPL_LINK_NOARG(SvxHatchTabPage, ChangeHatchHdl_Impl)
{
- XHatch* pHatch = NULL;
+ boost::scoped_ptr<XHatch> pHatch;
int nPos = m_pLbHatchings->GetSelectEntryPos();
if( nPos != LISTBOX_ENTRY_NOTFOUND )
- pHatch = new XHatch( ( (XHatchEntry*) pHatchingList->GetHatch( nPos ) )->GetHatch() );
+ pHatch.reset(new XHatch( ( (XHatchEntry*) pHatchingList->GetHatch( nPos ) )->GetHatch() ));
else
{
const SfxPoolItem* pPoolItem = NULL;
@@ -398,7 +396,7 @@ IMPL_LINK_NOARG(SvxHatchTabPage, ChangeHatchHdl_Impl)
if( ( drawing::FillStyle_HATCH == (drawing::FillStyle) ( ( const XFillStyleItem* ) pPoolItem )->GetValue() ) &&
( SFX_ITEM_SET == rOutAttrs.GetItemState( GetWhich( XATTR_FILLHATCH ), true, &pPoolItem ) ) )
{
- pHatch = new XHatch( ( ( const XFillHatchItem* ) pPoolItem )->GetHatchValue() );
+ pHatch.reset(new XHatch( ( ( const XFillHatchItem* ) pPoolItem )->GetHatchValue() ));
}
}
if( !pHatch )
@@ -406,7 +404,7 @@ IMPL_LINK_NOARG(SvxHatchTabPage, ChangeHatchHdl_Impl)
m_pLbHatchings->SelectEntryPos( 0 );
nPos = m_pLbHatchings->GetSelectEntryPos();
if( nPos != LISTBOX_ENTRY_NOTFOUND )
- pHatch = new XHatch( ( (XHatchEntry*) pHatchingList->GetHatch( nPos ) )->GetHatch() );
+ pHatch.reset(new XHatch( ( (XHatchEntry*) pHatchingList->GetHatch( nPos ) )->GetHatch() ));
}
}
if( pHatch )
@@ -443,7 +441,7 @@ IMPL_LINK_NOARG(SvxHatchTabPage, ChangeHatchHdl_Impl)
m_pCtlPreview->SetAttributes( aXFillAttr.GetItemSet() );
m_pCtlPreview->Invalidate();
- delete pHatch;
+ pHatch.reset();
}
m_pMtrDistance->SaveValue();
m_pMtrAngle->SaveValue();
@@ -480,9 +478,9 @@ IMPL_LINK_NOARG(SvxHatchTabPage, ClickAddHdl_Impl)
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
DBG_ASSERT(pFact, "Dialog creation failed!");
- AbstractSvxNameDialog* pDlg = pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc );
+ boost::scoped_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc ));
DBG_ASSERT(pDlg, "Dialog creation failed!");
- MessageDialog* pWarnBox = NULL;
+ boost::scoped_ptr<MessageDialog> pWarnBox;
sal_uInt16 nError = 1;
while( pDlg->Execute() == RET_OK )
@@ -502,16 +500,16 @@ IMPL_LINK_NOARG(SvxHatchTabPage, ClickAddHdl_Impl)
if( !pWarnBox )
{
- pWarnBox = new MessageDialog( GetParentDialog()
+ pWarnBox.reset(new MessageDialog( GetParentDialog()
,"DuplicateNameDialog"
- ,"cui/ui/queryduplicatedialog.ui");
+ ,"cui/ui/queryduplicatedialog.ui"));
}
if( pWarnBox->Execute() != RET_OK )
break;
}
- delete pDlg;
- delete pWarnBox;
+ pDlg.reset();
+ pWarnBox.reset();
if( !nError )
{
@@ -565,7 +563,7 @@ IMPL_LINK_NOARG(SvxHatchTabPage, ClickModifyHdl_Impl)
SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
DBG_ASSERT(pFact, "Dialog creation failed!");
- AbstractSvxNameDialog* pDlg = pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc );
+ boost::scoped_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc ));
DBG_ASSERT(pDlg, "Dialog creation failed!");
long nCount = pHatchingList->Count();
@@ -616,7 +614,6 @@ IMPL_LINK_NOARG(SvxHatchTabPage, ClickModifyHdl_Impl)
aBox.Execute();
}
}
- delete( pDlg );
}
return 0L;
}