diff options
author | Takeshi Abe <tabe@fixedpoint.jp> | 2014-04-15 15:08:24 +0900 |
---|---|---|
committer | Takeshi Abe <tabe@fixedpoint.jp> | 2014-04-15 16:12:31 +0900 |
commit | eb4c43aa61c08f88acfe5dd1499de0f8dbda4b8b (patch) | |
tree | 4b80faf3c545dceb999eee438a0ed6469049cbe9 /framework | |
parent | 1ac4eb946680ed738cb26be4d43f9716ba8feb17 (diff) |
Avoid possible memory leaks in case of exceptions
Change-Id: Ie07c6c9989da444eb6052691696e95b808c23fb0
Diffstat (limited to 'framework')
4 files changed, 17 insertions, 25 deletions
diff --git a/framework/source/uiconfiguration/imagemanagerimpl.cxx b/framework/source/uiconfiguration/imagemanagerimpl.cxx index 495da8d36301..9fe506ba1b6a 100644 --- a/framework/source/uiconfiguration/imagemanagerimpl.cxx +++ b/framework/source/uiconfiguration/imagemanagerimpl.cxx @@ -44,6 +44,7 @@ #include <vcl/pngwrite.hxx> #include <rtl/instance.hxx> #include <svtools/miscopt.hxx> +#include <boost/scoped_ptr.hpp> using ::com::sun::star::uno::Sequence; using ::com::sun::star::uno::XInterface; @@ -495,14 +496,12 @@ bool ImageManagerImpl::implts_loadUserImages( if ( xBitmapStream.is() ) { - SvStream* pSvStream( 0 ); BitmapEx aUserBitmap; { - pSvStream = utl::UcbStreamHelper::CreateStream( xBitmapStream ); + boost::scoped_ptr<SvStream> pSvStream(utl::UcbStreamHelper::CreateStream( xBitmapStream )); vcl::PNGReader aPngReader( *pSvStream ); aUserBitmap = aPngReader.Read(); } - delete pSvStream; // Delete old image list and create a new one from the read bitmap delete m_pUserImageList[nImageType]; @@ -578,12 +577,11 @@ bool ImageManagerImpl::implts_storeUserImages( ElementModes::WRITE|ElementModes::TRUNCATE ); if ( xBitmapStream.is() ) { - SvStream* pSvStream = utl::UcbStreamHelper::CreateStream( xBitmapStream ); { + boost::scoped_ptr<SvStream> pSvStream(utl::UcbStreamHelper::CreateStream( xBitmapStream )); vcl::PNGWriter aPngWriter( pImageList->GetAsHorizontalStrip() ); aPngWriter.Write( *pSvStream ); } - delete pSvStream; // Commit user bitmaps storage xTransaction = uno::Reference< XTransactedObject >( xUserBitmapsStorage, UNO_QUERY ); diff --git a/framework/source/uielement/controlmenucontroller.cxx b/framework/source/uielement/controlmenucontroller.cxx index 1c1840bbf4e1..d7446a11f369 100644 --- a/framework/source/uielement/controlmenucontroller.cxx +++ b/framework/source/uielement/controlmenucontroller.cxx @@ -42,6 +42,7 @@ #include <svtools/menuoptions.hxx> #include <svtools/popupmenucontrollerbase.hxx> #include <osl/mutex.hxx> +#include <boost/scoped_ptr.hpp> // Copied from svx // Function-Id's @@ -256,7 +257,7 @@ ControlMenuController::~ControlMenuController() // private function void ControlMenuController::updateImagesPopupMenu( PopupMenu* pPopupMenu ) { - ResMgr* pResMgr = ResMgr::CreateResMgr("svx", Application::GetSettings().GetUILanguageTag()); + boost::scoped_ptr<ResMgr> pResMgr(ResMgr::CreateResMgr("svx", Application::GetSettings().GetUILanguageTag())); ResId aResId( RID_SVXIMGLIST_FMEXPL, *pResMgr ); aResId.SetRT( RSC_IMAGELIST ); @@ -272,8 +273,6 @@ void ControlMenuController::updateImagesPopupMenu( PopupMenu* pPopupMenu ) pPopupMenu->SetItemImage( nConvertSlots[i], Image() ); } } - - delete pResMgr; } // private function @@ -404,7 +403,7 @@ void ControlMenuController::impl_setPopupMenu() { if ( m_pResPopupMenu == 0 ) { - ResMgr* pResMgr = ResMgr::CreateResMgr("svx", Application::GetSettings().GetUILanguageTag()); + boost::scoped_ptr<ResMgr> pResMgr(ResMgr::CreateResMgr("svx", Application::GetSettings().GetUILanguageTag())); if ( pResMgr ) { ResId aResId( RID_FMSHELL_CONVERSIONMENU, *pResMgr ); @@ -414,8 +413,6 @@ void ControlMenuController::impl_setPopupMenu() m_pResPopupMenu = new PopupMenu( aResId ); updateImagesPopupMenu( m_pResPopupMenu ); } - - delete pResMgr; } } // if ( m_pResPopupMenu == 0 ) } diff --git a/framework/source/uielement/fontsizemenucontroller.cxx b/framework/source/uielement/fontsizemenucontroller.cxx index 674c47e0fbca..d5309310d322 100644 --- a/framework/source/uielement/fontsizemenucontroller.cxx +++ b/framework/source/uielement/fontsizemenucontroller.cxx @@ -36,6 +36,7 @@ #include <vcl/settings.hxx> #include <svtools/ctrltool.hxx> #include <osl/mutex.hxx> +#include <boost/scoped_ptr.hpp> // Defines @@ -133,8 +134,8 @@ void FontSizeMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& r if ( pVCLPopupMenu ) { - FontList* pFontList = 0; - Printer* pInfoPrinter = 0; + boost::scoped_ptr<FontList> pFontList; + boost::scoped_ptr<Printer> pInfoPrinter; OUString aPrinterName; SolarMutexGuard aSolarMutexGuard; @@ -143,13 +144,13 @@ void FontSizeMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& r aPrinterName = retrievePrinterName( m_xFrame ); if ( !aPrinterName.isEmpty() ) { - pInfoPrinter = new Printer( aPrinterName ); + pInfoPrinter.reset(new Printer( aPrinterName )); if ( pInfoPrinter && pInfoPrinter->GetDevFontCount() > 0 ) - pFontList = new FontList( pInfoPrinter ); + pFontList.reset(new FontList( pInfoPrinter.get() )); } - if ( pFontList == 0 ) - pFontList = new FontList( Application::GetDefaultDevice() ); + if ( !pFontList ) + pFontList.reset(new FontList( Application::GetDefaultDevice() )); FontInfo aFntInfo = pFontList->Get( m_aFontDescriptor.Name, m_aFontDescriptor.StyleName ); @@ -233,9 +234,6 @@ void FontSizeMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& r } setCurHeight( long( m_aFontHeight.Height * 10), rPopupMenu ); - - delete pFontList; - delete pInfoPrinter; } } diff --git a/framework/source/uielement/newmenucontroller.cxx b/framework/source/uielement/newmenucontroller.cxx index d02ee3123911..cbe08737a01a 100644 --- a/framework/source/uielement/newmenucontroller.cxx +++ b/framework/source/uielement/newmenucontroller.cxx @@ -44,6 +44,7 @@ #include <svtools/acceleratorexecute.hxx> #include <unotools/moduleoptions.hxx> #include <osl/mutex.hxx> +#include <boost/scoped_ptr.hpp> // Defines @@ -324,12 +325,12 @@ void NewMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& rPopup if ( pVCLPopupMenu ) { MenuConfiguration aMenuCfg( m_xContext ); - BmkMenu* pSubMenu( 0 ); + boost::scoped_ptr<BmkMenu> pSubMenu; if ( m_bNewMenu ) - pSubMenu = (BmkMenu*)aMenuCfg.CreateBookmarkMenu( m_xFrame, BOOKMARK_NEWMENU ); + pSubMenu.reset((BmkMenu*)aMenuCfg.CreateBookmarkMenu( m_xFrame, BOOKMARK_NEWMENU )); else - pSubMenu = (BmkMenu*)aMenuCfg.CreateBookmarkMenu( m_xFrame, BOOKMARK_WIZARDMENU ); + pSubMenu.reset((BmkMenu*)aMenuCfg.CreateBookmarkMenu( m_xFrame, BOOKMARK_WIZARDMENU )); // copy entries as we have to use the provided popup menu *pVCLPopupMenu = *pSubMenu; @@ -358,8 +359,6 @@ void NewMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& rPopup if ( m_bShowImages ) setMenuImages( pVCLPopupMenu, m_bShowImages ); - - delete pSubMenu; } } |