svx/source/form/fmshimp.cxx      |   10 ++++------
 svx/source/gallery2/codec.cxx    |   17 ++++++++---------
 svx/source/gallery2/galbrws1.cxx |   10 ++++------
 svx/source/gallery2/galbrws2.cxx |    4 ++--
 svx/source/gallery2/galini.cxx   |    6 +++---
 svx/source/gallery2/gallery1.cxx |    9 ++++-----
 svx/source/gallery2/galmisc.cxx  |    5 ++---
 svx/source/gallery2/galobj.cxx   |    6 +++---
 8 files changed, 30 insertions(+), 37 deletions(-)

New commits:
commit e32b78ebfd9dc6f780e73d17c794c54828471895
Author: Takeshi Abe <t...@fixedpoint.jp>
Date:   Tue Jun 24 13:43:40 2014 +0900

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

diff --git a/svx/source/form/fmshimp.cxx b/svx/source/form/fmshimp.cxx
index 73f2f17..5c051c3 100644
--- a/svx/source/form/fmshimp.cxx
+++ b/svx/source/form/fmshimp.cxx
@@ -1600,9 +1600,9 @@ void FmXFormShell::ExecuteSearch()
     // ausgeraeumt sind, sollte hier ein SM_USETHREAD rein, denn die Suche in 
einem eigenen Thread ist doch etwas fluessiger
     // sollte allerdings irgendwie von dem unterliegenden Cursor abhaengig 
gemacht werden, DAO zum Beispiel ist nicht thread-sicher
     SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
-    AbstractFmSearchDialog* pDialog = NULL;
+    boost::scoped_ptr<AbstractFmSearchDialog> pDialog;
     if ( pFact )
-        pDialog = pFact->CreateFmSearchDialog( 
&m_pShell->GetViewShell()->GetViewFrame()->GetWindow(), strInitialText, 
aContextNames, nInitialContext, LINK( this, FmXFormShell, 
OnSearchContextRequest ) );
+        pDialog.reset(pFact->CreateFmSearchDialog( 
&m_pShell->GetViewShell()->GetViewFrame()->GetWindow(), strInitialText, 
aContextNames, nInitialContext, LINK( this, FmXFormShell, 
OnSearchContextRequest ) ));
     DBG_ASSERT( pDialog, "FmXFormShell::ExecuteSearch: could not create the 
search dialog!" );
     if ( pDialog )
     {
@@ -1610,7 +1610,7 @@ void FmXFormShell::ExecuteSearch()
         pDialog->SetFoundHandler( LINK( this, FmXFormShell, OnFoundData ) );
         pDialog->SetCanceledNotFoundHdl( LINK( this, FmXFormShell, 
OnCanceledNotFound ) );
         pDialog->Execute();
-        delete pDialog;
+        pDialog.reset();
     }
 
     // GridControls wieder restaurieren
@@ -4101,7 +4101,7 @@ void 
ControlConversionMenuController::StateChanged(sal_uInt16 nSID, SfxItemState
         {
             // We can't simply re-insert the item because we have a clear 
order for all the our items.
             // So first we have to determine the position of the item to 
insert.
-            PopupMenu* pSource = FmXFormShell::GetConversionMenu();
+            boost::scoped_ptr<PopupMenu> 
pSource(FmXFormShell::GetConversionMenu());
             sal_uInt16 nSourcePos = pSource->GetItemPos(nSID);
             DBG_ASSERT(nSourcePos != MENU_ITEM_NOTFOUND, 
"ControlConversionMenuController::StateChanged : FmXFormShell supplied an 
invalid menu !");
             sal_uInt16 nPrevInSource = nSourcePos;
@@ -4122,8 +4122,6 @@ void 
ControlConversionMenuController::StateChanged(sal_uInt16 nSID, SfxItemState
                 pSource->GetItemBits(nSID), OString(), ++nPrevInConversion);
             m_pConversionMenu->SetItemImage(nSID, pSource->GetItemImage(nSID));
             m_pConversionMenu->SetHelpId(nSID, pSource->GetHelpId(nSID));
-
-            delete pSource;
         }
         m_pMainMenu->EnableItem(SID_FM_CHANGECONTROLTYPE, 
m_pConversionMenu->GetItemCount() > 0);
     }
diff --git a/svx/source/gallery2/codec.cxx b/svx/source/gallery2/codec.cxx
index 8d3264e3..3ef8f15 100644
--- a/svx/source/gallery2/codec.cxx
+++ b/svx/source/gallery2/codec.cxx
@@ -22,6 +22,7 @@
 #include <tools/zcodec.hxx>
 #include <tools/debug.hxx>
 #include "codec.hxx"
+#include <boost/scoped_array.hpp>
 
 // - GalleryCodec -
 
@@ -98,11 +99,12 @@ void GalleryCodec::Read( SvStream& rStmToRead )
         // decompress
         if( 1 == nVersion )
         {
-            sal_uInt8*   pCompressedBuffer = new sal_uInt8[ nCompressedSize ]; 
rStm.Read( pCompressedBuffer, nCompressedSize );
-            sal_uInt8*  pInBuf = pCompressedBuffer;
-            sal_uInt8*  pOutBuf = new sal_uInt8[ nUnCompressedSize ];
-            sal_uInt8*  pTmpBuf = pOutBuf;
-            sal_uInt8*  pLast = pOutBuf + nUnCompressedSize - 1;
+            boost::scoped_array<sal_uInt8> pCompressedBuffer(new sal_uInt8[ 
nCompressedSize ]);
+            rStm.Read( pCompressedBuffer.get(), nCompressedSize );
+            sal_uInt8*  pInBuf = pCompressedBuffer.get();
+            boost::scoped_array<sal_uInt8> pOutBuf(new sal_uInt8[ 
nUnCompressedSize ]);
+            sal_uInt8*  pTmpBuf = pOutBuf.get();
+            sal_uInt8*  pLast = pOutBuf.get() + nUnCompressedSize - 1;
             sal_uIntPtr   nIndex = 0UL, nCountByte, nRunByte;
             bool    bEndDecoding = false;
 
@@ -138,10 +140,7 @@ void GalleryCodec::Read( SvStream& rStmToRead )
             }
             while ( !bEndDecoding && ( pTmpBuf <= pLast ) );
 
-               rStmToRead.Write( pOutBuf, nUnCompressedSize );
-
-            delete[] pOutBuf;
-            delete[] pCompressedBuffer;
+            rStmToRead.Write( pOutBuf.get(), nUnCompressedSize );
         }
         else if( 2 == nVersion )
         {
diff --git a/svx/source/gallery2/galbrws1.cxx b/svx/source/gallery2/galbrws1.cxx
index ddb56e1..0cc404e 100644
--- a/svx/source/gallery2/galbrws1.cxx
+++ b/svx/source/gallery2/galbrws1.cxx
@@ -38,6 +38,7 @@
 #include <svx/dialmgr.hxx>
 
 #include <svx/svxdlg.hxx>
+#include <boost/scoped_ptr.hpp>
 
 // - Namespaces -
 
@@ -361,13 +362,12 @@ void GalleryBrowser1::ImplExecute( sal_uInt16 nId )
             SvxAbstractDialogFactory* pFact = 
SvxAbstractDialogFactory::Create();
             if(pFact)
             {
-                VclAbstractRefreshableDialog* aActualizeProgress = 
pFact->CreateActualizeProgressDialog( this, pTheme );
+                boost::scoped_ptr<VclAbstractRefreshableDialog> 
aActualizeProgress(pFact->CreateActualizeProgressDialog( this, pTheme ));
                 DBG_ASSERT(aActualizeProgress, "Dialogdiet fail!");
 
                 aActualizeProgress->Update();
                 aActualizeProgress->Execute();
                 mpGallery->ReleaseTheme( pTheme, *this );
-                delete aActualizeProgress;
             }
         }
         break;
@@ -386,7 +386,7 @@ void GalleryBrowser1::ImplExecute( sal_uInt16 nId )
 
             SvxAbstractDialogFactory* pFact = 
SvxAbstractDialogFactory::Create();
             DBG_ASSERT(pFact, "Dialogdiet fail!");
-            AbstractTitleDialog* aDlg = pFact->CreateTitleDialog( this, 
aOldName );
+            boost::scoped_ptr<AbstractTitleDialog> 
aDlg(pFact->CreateTitleDialog( this, aOldName ));
             DBG_ASSERT(aDlg, "Dialogdiet fail!");
 
             if( aDlg->Execute() == RET_OK )
@@ -409,7 +409,6 @@ void GalleryBrowser1::ImplExecute( sal_uInt16 nId )
                 }
             }
             mpGallery->ReleaseTheme( pTheme, *this );
-            delete aDlg;
         }
         break;
 
@@ -423,12 +422,11 @@ void GalleryBrowser1::ImplExecute( sal_uInt16 nId )
                 SvxAbstractDialogFactory* pFact = 
SvxAbstractDialogFactory::Create();
                 if(pFact)
                 {
-                    AbstractGalleryIdDialog* aDlg = 
pFact->CreateGalleryIdDialog( this, pTheme );
+                    boost::scoped_ptr<AbstractGalleryIdDialog> 
aDlg(pFact->CreateGalleryIdDialog( this, pTheme ));
                     DBG_ASSERT(aDlg, "Dialogdiet fail!");
 
                     if( aDlg->Execute() == RET_OK )
                         pTheme->SetId( aDlg->GetId(), true );
-                    delete aDlg;
                 }
             }
 
diff --git a/svx/source/gallery2/galbrws2.cxx b/svx/source/gallery2/galbrws2.cxx
index 20e0ef7..af7335b 100644
--- a/svx/source/gallery2/galbrws2.cxx
+++ b/svx/source/gallery2/galbrws2.cxx
@@ -57,6 +57,7 @@
 #include <com/sun/star/graphic/XGraphic.hpp>
 #include <com/sun/star/style/GraphicLocation.hpp>
 #include <map>
+#include <boost/scoped_ptr.hpp>
 
 #undef GALLERY_USE_CLIPBOARD
 
@@ -1205,7 +1206,7 @@ void GalleryBrowser2::Execute( sal_uInt16 nId )
                     SvxAbstractDialogFactory* pFact = 
SvxAbstractDialogFactory::Create();
                     if(pFact)
                     {
-                        AbstractTitleDialog* aDlg = pFact->CreateTitleDialog( 
this, aOldTitle );
+                        boost::scoped_ptr<AbstractTitleDialog> 
aDlg(pFact->CreateTitleDialog( this, aOldTitle ));
                         DBG_ASSERT(aDlg, "Dialogdiet fail!");
                         if( aDlg->Execute() == RET_OK )
                         {
@@ -1222,7 +1223,6 @@ void GalleryBrowser2::Execute( sal_uInt16 nId )
                         }
 
                         mpCurTheme->ReleaseObject( pObj );
-                        delete aDlg;
                     }
                 }
             }
diff --git a/svx/source/gallery2/galini.cxx b/svx/source/gallery2/galini.cxx
index 090b086..b4c5338 100644
--- a/svx/source/gallery2/galini.cxx
+++ b/svx/source/gallery2/galini.cxx
@@ -23,12 +23,13 @@
 #include <unotools/syslocale.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/settings.hxx>
+#include <boost/scoped_ptr.hpp>
 
 OUString GalleryThemeEntry::ReadStrFromIni(const OUString &aKeyName )
 {
-    SvStream *pStrm = ::utl::UcbStreamHelper::CreateStream(
+    boost::scoped_ptr<SvStream> pStrm(::utl::UcbStreamHelper::CreateStream(
                                 GetStrURL().GetMainURL( 
INetURLObject::NO_DECODE ),
-                                STREAM_READ );
+                                STREAM_READ ));
 
     const LanguageTag &rLangTag = 
Application::GetSettings().GetUILanguageTag();
 
@@ -86,7 +87,6 @@ OUString GalleryThemeEntry::ReadStrFromIni(const OUString 
&aKeyName )
                 }
             }
         }
-        delete pStrm;
     }
 
     SAL_INFO( "svx", "readStrFromIni returns '" << aResult << "'");
diff --git a/svx/source/gallery2/gallery1.cxx b/svx/source/gallery2/gallery1.cxx
index 8d3024f..20fa438 100644
--- a/svx/source/gallery2/gallery1.cxx
+++ b/svx/source/gallery2/gallery1.cxx
@@ -34,6 +34,7 @@
 #include "svx/gallery1.hxx"
 #include <com/sun/star/sdbc/XResultSet.hpp>
 #include <com/sun/star/ucb/XContentAccess.hpp>
+#include <boost/scoped_ptr.hpp>
 
 // - Namespaces -
 
@@ -242,7 +243,7 @@ void Gallery::ImplLoadSubDirs( const INetURLObject& 
rBaseURL, bool& rbDirIsReadO
             OUString        aTestFile( "cdefghij.klm" );
 
             aTestURL.Append( aTestFile );
-            SvStream* pTestStm = ::utl::UcbStreamHelper::CreateStream( 
aTestURL.GetMainURL( INetURLObject::NO_DECODE ), STREAM_WRITE );
+            boost::scoped_ptr<SvStream> 
pTestStm(::utl::UcbStreamHelper::CreateStream( aTestURL.GetMainURL( 
INetURLObject::NO_DECODE ), STREAM_WRITE ));
 
             if( pTestStm )
             {
@@ -251,7 +252,7 @@ void Gallery::ImplLoadSubDirs( const INetURLObject& 
rBaseURL, bool& rbDirIsReadO
                 if( pTestStm->GetError() )
                     rbDirIsReadOnly = true;
 
-                delete pTestStm;
+                pTestStm.reset();
                 KillFile( aTestURL );
             }
             else
@@ -601,7 +602,7 @@ GalleryTheme* Gallery::ImplGetCachedTheme(const 
GalleryThemeEntry* pThemeEntry)
 
             if( FileExists( aURL ) )
             {
-                SvStream* pIStm = ::utl::UcbStreamHelper::CreateStream( 
aURL.GetMainURL( INetURLObject::NO_DECODE ), STREAM_READ );
+                boost::scoped_ptr<SvStream> 
pIStm(::utl::UcbStreamHelper::CreateStream( aURL.GetMainURL( 
INetURLObject::NO_DECODE ), STREAM_READ ));
 
                 if( pIStm )
                 {
@@ -618,8 +619,6 @@ GalleryTheme* Gallery::ImplGetCachedTheme(const 
GalleryThemeEntry* pThemeEntry)
                     catch (const css::ucb::ContentCreationException&)
                     {
                     }
-
-                    delete pIStm;
                 }
             }
 
diff --git a/svx/source/gallery2/galmisc.cxx b/svx/source/gallery2/galmisc.cxx
index 47b05ea..9ec75fe 100644
--- a/svx/source/gallery2/galmisc.cxx
+++ b/svx/source/gallery2/galmisc.cxx
@@ -47,6 +47,7 @@
 #include <com/sun/star/ucb/XContentAccess.hpp>
 #include <com/sun/star/ucb/TransferInfo.hpp>
 #include <com/sun/star/ucb/NameClash.hpp>
+#include <boost/scoped_ptr.hpp>
 
 using namespace ::rtl;
 using namespace ::com::sun::star;
@@ -95,7 +96,7 @@ sal_uInt16 GalleryGraphicImport( const INetURLObject& rURL, 
Graphic& rGraphic,
     if( pIStm )
     {
         GraphicFilter& rGraphicFilter = GraphicFilter::GetGraphicFilter();
-        GalleryProgress*    pProgress = bShowProgress ? new GalleryProgress( 
&rGraphicFilter ) : NULL;
+        boost::scoped_ptr<GalleryProgress> pProgress(bShowProgress ? new 
GalleryProgress( &rGraphicFilter ) : NULL);
         sal_uInt16              nFormat;
 
         if( !rGraphicFilter.ImportGraphic( rGraphic, rURL.GetMainURL( 
INetURLObject::NO_DECODE ), *pIStm, GRFILTER_FORMAT_DONTKNOW, &nFormat ) )
@@ -103,8 +104,6 @@ sal_uInt16 GalleryGraphicImport( const INetURLObject& rURL, 
Graphic& rGraphic,
             rFilterName = rGraphicFilter.GetImportFormatName( nFormat );
             nRet = SGA_IMPORT_FILE;
         }
-
-        delete pProgress;
     }
 
     return nRet;
diff --git a/svx/source/gallery2/galobj.cxx b/svx/source/gallery2/galobj.cxx
index 70196d4..87686f8 100644
--- a/svx/source/gallery2/galobj.cxx
+++ b/svx/source/gallery2/galobj.cxx
@@ -39,6 +39,7 @@
 #include <vcl/settings.hxx>
 #include <vcl/dibtools.hxx>
 #include "gallerydrawmodel.hxx"
+#include <boost/scoped_ptr.hpp>
 
 using namespace ::com::sun::star;
 
@@ -230,8 +231,8 @@ const OUString SgaObject::GetTitle() const
                 !aResourceName.isEmpty() && ( nResId > 0 ) && ( nResId < 
0x10000 ) )
             {
                 OString aMgrName(OUStringToOString(aResourceName, 
RTL_TEXTENCODING_UTF8));
-                ResMgr* pResMgr = ResMgr::CreateResMgr( aMgrName.getStr(),
-                            Application::GetSettings().GetUILanguageTag() );
+                boost::scoped_ptr<ResMgr> pResMgr(ResMgr::CreateResMgr( 
aMgrName.getStr(),
+                            Application::GetSettings().GetUILanguageTag() ));
                 if ( pResMgr )
                 {
                     ResId aResId( (sal_uInt16)nResId, *pResMgr );
@@ -240,7 +241,6 @@ const OUString SgaObject::GetTitle() const
                     {
                         aReturnValue = aResId.toString();
                     }
-                    delete pResMgr;
                 }
             }
         }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to