[Libreoffice-commits] core.git: cui/source

Takeshi Abe tabe at fixedpoint.jp
Sat Aug 2 03:48:09 PDT 2014


 cui/source/tabpages/tpcolor.cxx  |   15 +++++---------
 cui/source/tabpages/tpgradnt.cxx |   40 +++++++++++++++++---------------------
 cui/source/tabpages/tphatch.cxx  |   41 ++++++++++++++++++---------------------
 3 files changed, 43 insertions(+), 53 deletions(-)

New commits:
commit fbc7cfe515169766f4436500987100b3075378dc
Author: Takeshi Abe <tabe at fixedpoint.jp>
Date:   Sat Aug 2 19:43:47 2014 +0900

    Avoid possible memory leaks in case of exceptions
    
    Change-Id: I55f418ebcb96b44ab423a676881ffe8f455a923d

diff --git a/cui/source/tabpages/tpcolor.cxx b/cui/source/tabpages/tpcolor.cxx
index 9a1218a..24ca821 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 5314b37..38c502c 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 f1ebdc6..501bd67 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;
 }


More information about the Libreoffice-commits mailing list