Kaydet (Commit) fbc7cfe5 authored tarafından Takeshi Abe's avatar Takeshi Abe

Avoid possible memory leaks in case of exceptions

Change-Id: I55f418ebcb96b44ab423a676881ffe8f455a923d
üst e9cdb11b
......@@ -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;
}
......
......@@ -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;
}
......
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment