vcl/generic/fontmanager/helper.cxx | 13 ++++-------- vcl/source/app/dbggui.cxx | 7 ++---- vcl/source/control/edit.cxx | 40 +++++++++++++------------------------ 3 files changed, 23 insertions(+), 37 deletions(-)
New commits: commit 59b428189d14da78e761c8dbb8bd8ba7de4fa511 Author: Takeshi Abe <t...@fixedpoint.jp> Date: Tue Mar 11 09:24:30 2014 +0900 Avoid possible resource leaks by boost::scoped_array Change-Id: I3a9131d75690e18caec4c328934735a9ca19e7ca diff --git a/vcl/generic/fontmanager/helper.cxx b/vcl/generic/fontmanager/helper.cxx index 729d526..a35264f 100644 --- a/vcl/generic/fontmanager/helper.cxx +++ b/vcl/generic/fontmanager/helper.cxx @@ -31,6 +31,7 @@ #include <tools/urlobj.hxx> #include "vcl/helper.hxx" #include "vcl/ppdparser.hxx" +#include <boost/scoped_array.hpp> using ::rtl::Bootstrap; @@ -284,15 +285,15 @@ bool psp::convertPfbToPfa( ::osl::File& rInFile, ::osl::File& rOutFile ) } else if( nType == 1 || nType == 2 ) { - unsigned char* pBuffer = new unsigned char[ nBytesToRead+1 ]; + boost::scoped_array<unsigned char> pBuffer(new unsigned char[ nBytesToRead+1 ]); - if( ! rInFile.read( pBuffer, nBytesToRead, nRead ) && nRead == nBytesToRead ) + if( ! rInFile.read( pBuffer.get(), nBytesToRead, nRead ) && nRead == nBytesToRead ) { if( nType == 1 ) { // ascii data, convert dos lineends( \r\n ) and // m_ac lineends( \r ) to \n - unsigned char * pWriteBuffer = new unsigned char[ nBytesToRead ]; + boost::scoped_array<unsigned char> pWriteBuffer(new unsigned char[ nBytesToRead ]); unsigned int nBytesToWrite = 0; for( unsigned int i = 0; i < nBytesToRead; i++ ) { @@ -306,10 +307,8 @@ bool psp::convertPfbToPfa( ::osl::File& rInFile, ::osl::File& rOutFile ) else pWriteBuffer[ nBytesToWrite++ ] = '\n'; } - if( rOutFile.write( pWriteBuffer, nBytesToWrite, nRead ) || nRead != nBytesToWrite ) + if( rOutFile.write( pWriteBuffer.get(), nBytesToWrite, nRead ) || nRead != nBytesToWrite ) bSuccess = false; - - delete [] pWriteBuffer; } else { @@ -337,8 +336,6 @@ bool psp::convertPfbToPfa( ::osl::File& rInFile, ::osl::File& rOutFile ) } else bSuccess = false; - - delete [] pBuffer; } else if( nType == 3 ) bEof = true; diff --git a/vcl/source/app/dbggui.cxx b/vcl/source/app/dbggui.cxx index ac2cdd0..81c32b2 100644 --- a/vcl/source/app/dbggui.cxx +++ b/vcl/source/app/dbggui.cxx @@ -58,6 +58,7 @@ #include <map> #include <algorithm> +#include <boost/scoped_array.hpp> #include <boost/scoped_ptr.hpp> using namespace ::com::sun::star; @@ -1090,8 +1091,8 @@ void DbgDialogTest( Window* pWindow ) if ( !pGetChild ) return; - Rectangle* pRectAry = (Rectangle*)new long[(sizeof(Rectangle)*nChildCount)/sizeof(long)]; - memset( pRectAry, 0, sizeof(Rectangle)*nChildCount ); + boost::scoped_array<Rectangle> pRectAry((Rectangle*)new long[(sizeof(Rectangle)*nChildCount)/sizeof(long)]); + memset( pRectAry.get(), 0, sizeof(Rectangle)*nChildCount ); if ( pWindow->IsDialog() ) { @@ -1433,8 +1434,6 @@ void DbgDialogTest( Window* pWindow ) pGetChild = pGetChild->GetWindow( WINDOW_NEXT ); i++; } - - delete [] pRectAry; } #ifndef WNT diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx index 0a2170e..0803532 100644 --- a/vcl/source/control/edit.cxx +++ b/vcl/source/control/edit.cxx @@ -67,6 +67,7 @@ #include <vcl/unohelp2.hxx> #include <officecfg/Office/Common.hxx> +#include <boost/scoped_array.hpp> using namespace ::com::sun::star; using namespace ::com::sun::star::uno; @@ -486,15 +487,15 @@ void Edit::ImplRepaint(bool bLayout) sal_Int32 nLen = aText.getLength(); sal_Int32 nDXBuffer[256]; - sal_Int32* pDXBuffer = NULL; + boost::scoped_array<sal_Int32> pDXBuffer; sal_Int32* pDX = nDXBuffer; if( !aText.isEmpty() ) { if( (size_t) (2*aText.getLength()) > SAL_N_ELEMENTS(nDXBuffer) ) { - pDXBuffer = new sal_Int32[2*(aText.getLength()+1)]; - pDX = pDXBuffer; + pDXBuffer.reset(new sal_Int32[2*(aText.getLength()+1)]); + pDX = pDXBuffer.get(); } GetCaretPositions( aText, pDX, 0, nLen ); @@ -512,7 +513,6 @@ void Edit::ImplRepaint(bool bLayout) DrawText( aPos, aText, 0, nLen, pVector, pDisplayText ); - delete [] pDXBuffer; return; } @@ -693,8 +693,6 @@ void Edit::ImplRepaint(bool bLayout) if ( bVisCursor && ( !mpIMEInfos || mpIMEInfos->bCursor ) ) pCursor->Show(); - - delete [] pDXBuffer; } void Edit::ImplDelete( const Selection& rSelection, sal_uInt8 nDirection, sal_uInt8 nMode ) @@ -1089,15 +1087,15 @@ void Edit::ImplShowCursor( bool bOnlyIfVisible ) long nTextPos = 0; sal_Int32 nDXBuffer[256]; - sal_Int32* pDXBuffer = NULL; + boost::scoped_array<sal_Int32> pDXBuffer; sal_Int32* pDX = nDXBuffer; if( !aText.isEmpty() ) { if( (size_t) (2*aText.getLength()) > SAL_N_ELEMENTS(nDXBuffer) ) { - pDXBuffer = new sal_Int32[2*(aText.getLength()+1)]; - pDX = pDXBuffer; + pDXBuffer.reset(new sal_Int32[2*(aText.getLength()+1)]); + pDX = pDXBuffer.get(); } GetCaretPositions( aText, pDX, 0, aText.getLength() ); @@ -1153,9 +1151,6 @@ void Edit::ImplShowCursor( bool bOnlyIfVisible ) pCursor->SetPos( Point( nCursorPosX, nCursorPosY ) ); pCursor->SetSize( Size( nCursorWidth, nTextHeight ) ); pCursor->Show(); - - if( pDXBuffer ) - delete [] pDXBuffer; } void Edit::ImplAlign() @@ -1208,12 +1203,12 @@ sal_Int32 Edit::ImplGetCharPos( const Point& rWindowPos ) const OUString aText = ImplGetText(); sal_Int32 nDXBuffer[256]; - sal_Int32* pDXBuffer = NULL; + boost::scoped_array<sal_Int32> pDXBuffer; sal_Int32* pDX = nDXBuffer; if( (size_t) (2*aText.getLength()) > SAL_N_ELEMENTS(nDXBuffer) ) { - pDXBuffer = new sal_Int32[2*(aText.getLength()+1)]; - pDX = pDXBuffer; + pDXBuffer.reset(new sal_Int32[2*(aText.getLength()+1)]); + pDX = pDXBuffer.get(); } GetCaretPositions( aText, pDX, 0, aText.getLength() ); @@ -1255,9 +1250,6 @@ sal_Int32 Edit::ImplGetCharPos( const Point& rWindowPos ) const nIndex = EDIT_NOLIMIT; } - if( pDXBuffer ) - delete [] pDXBuffer; - return nIndex; } @@ -2177,15 +2169,15 @@ void Edit::Command( const CommandEvent& rCEvt ) { OUString aText = ImplGetText(); sal_Int32 nDXBuffer[256]; - sal_Int32* pDXBuffer = NULL; + boost::scoped_array<sal_Int32> pDXBuffer; sal_Int32* pDX = nDXBuffer; if( !aText.isEmpty() ) { if( (size_t) (2*aText.getLength()) > SAL_N_ELEMENTS(nDXBuffer) ) { - pDXBuffer = new sal_Int32[2*(aText.getLength()+1)]; - pDX = pDXBuffer; + pDXBuffer.reset(new sal_Int32[2*(aText.getLength()+1)]); + pDX = pDXBuffer.get(); } GetCaretPositions( aText, pDX, 0, aText.getLength() ); @@ -2193,16 +2185,14 @@ void Edit::Command( const CommandEvent& rCEvt ) long nTH = GetTextHeight(); Point aPos( mnXOffset, ImplGetTextYPosition() ); - Rectangle* aRects = new Rectangle[ mpIMEInfos->nLen ]; + boost::scoped_array<Rectangle> aRects(new Rectangle[ mpIMEInfos->nLen ]); for ( int nIndex = 0; nIndex < mpIMEInfos->nLen; ++nIndex ) { Rectangle aRect( aPos, Size( 10, nTH ) ); aRect.Left() = pDX[2*(nIndex+mpIMEInfos->nPos)] + mnXOffset + ImplGetExtraOffset(); aRects[ nIndex ] = aRect; } - SetCompositionCharRect( aRects, mpIMEInfos->nLen ); - delete[] aRects; - delete[] pDXBuffer; + SetCompositionCharRect( aRects.get(), mpIMEInfos->nLen ); } } else _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits