From 230a171d6e25bb33e9a30566d4a22952b652b9c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= Date: Thu, 21 Jan 2016 09:28:12 +0000 Subject: [PATCH 2/2] valgrind: memleak on thrown exception (cherry picked from commit f5aefab2a62a90c631e05ec29022a2f7e19f00c3) Change-Id: I2788c5fe04a984d6534adbd3186cc652685152e8 --- vcl/source/filter/wmf/enhwmf.cxx | 6 +++--- vcl/source/filter/wmf/winmtf.cxx | 10 ++++------ vcl/source/filter/wmf/winmtf.hxx | 2 +- vcl/source/filter/wmf/winwmf.cxx | 4 ++-- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/vcl/source/filter/wmf/enhwmf.cxx b/vcl/source/filter/wmf/enhwmf.cxx index a59d684..f130fad 100644 --- a/vcl/source/filter/wmf/enhwmf.cxx +++ b/vcl/source/filter/wmf/enhwmf.cxx @@ -1239,7 +1239,7 @@ bool EnhWMFReader::ReadEnhWMF() Rectangle aCropRect( Point( xSrc, ySrc ), Size( cxSrc, cySrc ) ); aBitmap.Crop( aCropRect ); } - aBmpSaveList.push_back( new BSaveStruct( aBitmap, aRect, dwRop, pOut->GetFillStyle () ) ); + aBmpSaveList.emplace_back(new BSaveStruct(aBitmap, aRect, dwRop, pOut->GetFillStyle ())); } } } @@ -1303,7 +1303,7 @@ bool EnhWMFReader::ReadEnhWMF() Rectangle aCropRect( Point( xSrc, ySrc ), Size( cxSrc, cySrc ) ); aBitmap.Crop( aCropRect ); } - aBmpSaveList.push_back( new BSaveStruct( aBitmap, aRect, dwRop, pOut->GetFillStyle () ) ); + aBmpSaveList.emplace_back(new BSaveStruct(aBitmap, aRect, dwRop, pOut->GetFillStyle ())); } } } @@ -1373,7 +1373,7 @@ bool EnhWMFReader::ReadEnhWMF() Rectangle aCropRect( Point( xSrc, ySrc ), Size( cxSrc, cySrc ) ); aBitmap.Crop( aCropRect ); } - aBmpSaveList.push_back( new BSaveStruct( aBitmap, aRect, dwRop, pOut->GetFillStyle () ) ); + aBmpSaveList.emplace_back(new BSaveStruct(aBitmap, aRect, dwRop, pOut->GetFillStyle ())); } } } diff --git a/vcl/source/filter/wmf/winmtf.cxx b/vcl/source/filter/wmf/winmtf.cxx index 513751d..b2ae7dc 100644 --- a/vcl/source/filter/wmf/winmtf.cxx +++ b/vcl/source/filter/wmf/winmtf.cxx @@ -1577,7 +1577,7 @@ void WinMtfOutput::ResolveBitmapActions( BSaveStructList_impl& rSaveList ) size_t nObjectsOfSameSize = 0; size_t nObjectStartIndex = nObjects - nObjectsLeft; - BSaveStruct* pSave = rSaveList[ nObjectStartIndex ]; + BSaveStruct* pSave = rSaveList[nObjectStartIndex].get(); Rectangle aRect( pSave->aOutRect ); for ( i = nObjectStartIndex; i < nObjects; ) @@ -1585,7 +1585,7 @@ void WinMtfOutput::ResolveBitmapActions( BSaveStructList_impl& rSaveList ) nObjectsOfSameSize++; if ( ++i < nObjects ) { - pSave = rSaveList[ i ]; + pSave = rSaveList[i].get(); if ( pSave->aOutRect != aRect ) break; } @@ -1595,7 +1595,7 @@ void WinMtfOutput::ResolveBitmapActions( BSaveStructList_impl& rSaveList ) for ( i = nObjectStartIndex; i < ( nObjectStartIndex + nObjectsOfSameSize ); i++ ) { - pSave = rSaveList[ i ]; + pSave = rSaveList[i].get(); sal_uInt32 nWinRop = pSave->nWinRop; sal_uInt8 nRasterOperation = (sal_uInt8)( nWinRop >> 16 ); @@ -1623,7 +1623,7 @@ void WinMtfOutput::ResolveBitmapActions( BSaveStructList_impl& rSaveList ) { if ( nObjectsOfSameSize == 2 ) { - BSaveStruct* pSave2 = rSaveList[ i + 1 ]; + BSaveStruct* pSave2 = rSaveList[i + 1].get(); if ( ( pSave->aBmp.GetPrefSize() == pSave2->aBmp.GetPrefSize() ) && ( pSave->aBmp.GetPrefMapMode() == pSave2->aBmp.GetPrefMapMode() ) ) { @@ -1792,8 +1792,6 @@ void WinMtfOutput::ResolveBitmapActions( BSaveStructList_impl& rSaveList ) nObjectsLeft -= nObjectsOfSameSize; } - for( size_t i = 0, n = rSaveList.size(); i < n; ++i ) - delete rSaveList[ i ]; rSaveList.clear(); } diff --git a/vcl/source/filter/wmf/winmtf.hxx b/vcl/source/filter/wmf/winmtf.hxx index 3b78821..dd35561 100644 --- a/vcl/source/filter/wmf/winmtf.hxx +++ b/vcl/source/filter/wmf/winmtf.hxx @@ -471,7 +471,7 @@ struct BSaveStruct {} }; -typedef ::std::vector< BSaveStruct* > BSaveStructList_impl; +typedef std::vector> BSaveStructList_impl; enum GDIObjectType { diff --git a/vcl/source/filter/wmf/winwmf.cxx b/vcl/source/filter/wmf/winwmf.cxx index 1f4cd7d..04e5535 100644 --- a/vcl/source/filter/wmf/winwmf.cxx +++ b/vcl/source/filter/wmf/winwmf.cxx @@ -676,7 +676,7 @@ void WMFReader::ReadRecordParams( sal_uInt16 nFunc ) aBmp.Crop( aCropRect ); } Rectangle aDestRect( aPoint, Size( nSxe, nSye ) ); - aBmpSaveList.push_back( new BSaveStruct( aBmp, aDestRect, nWinROP, pOut->GetFillStyle () ) ); + aBmpSaveList.emplace_back(new BSaveStruct(aBmp, aDestRect, nWinROP, pOut->GetFillStyle ())); } } } @@ -726,7 +726,7 @@ void WMFReader::ReadRecordParams( sal_uInt16 nFunc ) Rectangle aCropRect( Point( nSx, nSy ), Size( nSxe, nSye ) ); aBmp.Crop( aCropRect ); } - aBmpSaveList.push_back( new BSaveStruct( aBmp, aDestRect, nWinROP, pOut->GetFillStyle () ) ); + aBmpSaveList.emplace_back(new BSaveStruct(aBmp, aDestRect, nWinROP, pOut->GetFillStyle ())); } } } -- 2.5.0