[Libreoffice-commits] core.git: vcl/source
Takeshi Abe
tabe at fixedpoint.jp
Tue Mar 11 14:59:19 PDT 2014
vcl/source/filter/GraphicNativeMetadata.cxx | 8 ++++----
vcl/source/filter/graphicfilter.cxx | 11 +++++------
vcl/source/filter/igif/gifread.cxx | 15 ++++++---------
vcl/source/filter/jpeg/Exif.cxx | 12 +++++-------
vcl/source/filter/jpeg/JpegReader.cxx | 5 ++---
vcl/source/filter/jpeg/jpegc.cxx | 16 +++++++---------
6 files changed, 29 insertions(+), 38 deletions(-)
New commits:
commit de660901e1805f33467d425018d6bf5d5326e376
Author: Takeshi Abe <tabe at fixedpoint.jp>
Date: Wed Mar 12 06:53:08 2014 +0900
Avoid possible resource leaks by boost::scoped_array
Change-Id: I5a73d3410262c830795c8b132227fcff5f5127e3
diff --git a/vcl/source/filter/GraphicNativeMetadata.cxx b/vcl/source/filter/GraphicNativeMetadata.cxx
index 785f89c..08b698a 100644
--- a/vcl/source/filter/GraphicNativeMetadata.cxx
+++ b/vcl/source/filter/GraphicNativeMetadata.cxx
@@ -22,6 +22,7 @@
#include <vcl/gfxlink.hxx>
#include "jpeg/Exif.hxx"
+#include <boost/scoped_array.hpp>
GraphicNativeMetadata::GraphicNativeMetadata() :
mRotation(0)
@@ -41,16 +42,15 @@ bool GraphicNativeMetadata::read(Graphic& rGraphic)
if ( aLink.GetType() != GFX_LINK_TYPE_NATIVE_JPG )
return false;
sal_uInt32 aDataSize = aLink.GetDataSize();
- sal_uInt8* aBuffer = new sal_uInt8[aDataSize];
+ boost::scoped_array<sal_uInt8> aBuffer(new sal_uInt8[aDataSize]);
- memcpy(aBuffer, aLink.GetData(), aDataSize);
- SvMemoryStream aMemoryStream(aBuffer, aDataSize, STREAM_READ);
+ memcpy(aBuffer.get(), aLink.GetData(), aDataSize);
+ SvMemoryStream aMemoryStream(aBuffer.get(), aDataSize, STREAM_READ);
Exif aExif;
aExif.read(aMemoryStream);
mRotation = aExif.getRotation();
- delete[] aBuffer;
return true;
}
diff --git a/vcl/source/filter/graphicfilter.cxx b/vcl/source/filter/graphicfilter.cxx
index 7840d61..a033e9b 100644
--- a/vcl/source/filter/graphicfilter.cxx
+++ b/vcl/source/filter/graphicfilter.cxx
@@ -63,6 +63,7 @@
#include <rtl/instance.hxx>
#include <vcl/metaact.hxx>
#include <vector>
+#include <boost/scoped_array.hpp>
#include <boost/scoped_ptr.hpp>
#include "FilterConfigCache.hxx"
@@ -621,22 +622,20 @@ static bool ImpPeekGraphicFormat( SvStream& rStream, OUString& rFormatExtension,
if( !bTest )
{
sal_uLong nSize = ( nStreamLen > 2048 ) ? 2048 : nStreamLen;
- sal_uInt8* pBuf = new sal_uInt8 [ nSize ];
+ boost::scoped_array<sal_uInt8> pBuf(new sal_uInt8 [ nSize ]);
rStream.Seek( nStreamPos );
- rStream.Read( pBuf, nSize );
- sal_uInt8* pPtr = ImplSearchEntry( pBuf, (sal_uInt8*)"#define", nSize, 7 );
+ rStream.Read( pBuf.get(), nSize );
+ sal_uInt8* pPtr = ImplSearchEntry( pBuf.get(), (sal_uInt8*)"#define", nSize, 7 );
if( pPtr )
{
- if( ImplSearchEntry( pPtr, (sal_uInt8*)"_width", pBuf + nSize - pPtr, 6 ) )
+ if( ImplSearchEntry( pPtr, (sal_uInt8*)"_width", pBuf.get() + nSize - pPtr, 6 ) )
{
rFormatExtension = "XBM";
- delete[] pBuf;
return true;
}
}
- delete[] pBuf;
}
else if( rFormatExtension.startsWith( "XBM" ) )
{
diff --git a/vcl/source/filter/igif/gifread.cxx b/vcl/source/filter/igif/gifread.cxx
index 26ceb86..b3168a0 100644
--- a/vcl/source/filter/igif/gifread.cxx
+++ b/vcl/source/filter/igif/gifread.cxx
@@ -22,6 +22,7 @@
#include "decode.hxx"
#include "gifread.hxx"
+#include <boost/scoped_array.hpp>
#define NO_PENDING( rStm ) ( ( rStm ).GetError() != ERRCODE_IO_PENDING )
@@ -172,12 +173,12 @@ bool GIFReader::ReadGlobalHeader()
void GIFReader::ReadPaletteEntries( BitmapPalette* pPal, sal_uLong nCount )
{
const sal_uLong nLen = 3UL * nCount;
- sal_uInt8* pBuf = new sal_uInt8[ nLen ];
+ boost::scoped_array<sal_uInt8> pBuf(new sal_uInt8[ nLen ]);
- rIStm.Read( pBuf, nLen );
+ rIStm.Read( pBuf.get(), nLen );
if( NO_PENDING( rIStm ) )
{
- sal_uInt8* pTmp = pBuf;
+ sal_uInt8* pTmp = pBuf.get();
for( sal_uLong i = 0UL; i < nCount; )
{
@@ -197,8 +198,6 @@ void GIFReader::ReadPaletteEntries( BitmapPalette* pPal, sal_uLong nCount )
(*pPal)[ 254UL ] = Color( COL_BLACK );
}
}
-
- delete[] pBuf;
}
bool GIFReader::ReadExtension()
@@ -315,10 +314,10 @@ bool GIFReader::ReadExtension()
while( cSize && bStatus && !rIStm.IsEof() )
{
sal_uInt16 nCount = (sal_uInt16) cSize + 1;
- char* pBuffer = new char[ nCount ];
+ boost::scoped_array<char> pBuffer(new char[ nCount ]);
bRet = false;
- rIStm.Read( pBuffer, nCount );
+ rIStm.Read( pBuffer.get(), nCount );
if( NO_PENDING( rIStm ) )
{
cSize = (sal_uInt8) pBuffer[ cSize ];
@@ -326,8 +325,6 @@ bool GIFReader::ReadExtension()
}
else
cSize = 0;
-
- delete[] pBuffer;
}
}
}
diff --git a/vcl/source/filter/jpeg/Exif.cxx b/vcl/source/filter/jpeg/Exif.cxx
index ea4d1314..e7a3287 100644
--- a/vcl/source/filter/jpeg/Exif.cxx
+++ b/vcl/source/filter/jpeg/Exif.cxx
@@ -18,6 +18,7 @@
*/
#include "Exif.hxx"
+#include <boost/scoped_array.hpp>
Exif::Exif() :
maOrientation(TOP_LEFT),
@@ -214,10 +215,10 @@ bool Exif::processExif(SvStream& rStream, sal_uInt16 aSectionLength, bool bSetVa
sal_uInt16 aLength = aSectionLength - 6; // Length = Section - Header
- sal_uInt8* aExifData = new sal_uInt8[aLength];
+ boost::scoped_array<sal_uInt8> aExifData(new sal_uInt8[aLength]);
sal_uInt32 aExifDataBeginPosition = rStream.Tell();
- rStream.Read(aExifData, aLength);
+ rStream.Read(aExifData.get(), aLength);
// Exif detected
mbExifPresent = true;
@@ -229,7 +230,6 @@ bool Exif::processExif(SvStream& rStream, sal_uInt16 aSectionLength, bool bSetVa
if (!bIntel && !bMotorola)
{
- delete[] aExifData;
return false;
}
@@ -251,7 +251,6 @@ bool Exif::processExif(SvStream& rStream, sal_uInt16 aSectionLength, bool bSetVa
if (aTiffHeader->tagAlign != 0x002A) // TIFF tag
{
- delete[] aExifData;
return false;
}
@@ -263,15 +262,14 @@ bool Exif::processExif(SvStream& rStream, sal_uInt16 aSectionLength, bool bSetVa
aNumberOfTags = ((aExifData[aOffset] << 8) | aExifData[aOffset+1]);
}
- processIFD(aExifData, aLength, aOffset+2, aNumberOfTags, bSetValue, bSwap);
+ processIFD(aExifData.get(), aLength, aOffset+2, aNumberOfTags, bSetValue, bSwap);
if (bSetValue)
{
rStream.Seek(aExifDataBeginPosition);
- rStream.Write(aExifData, aLength);
+ rStream.Write(aExifData.get(), aLength);
}
- delete[] aExifData;
return true;
}
diff --git a/vcl/source/filter/jpeg/JpegReader.cxx b/vcl/source/filter/jpeg/JpegReader.cxx
index 2d31249..3159503 100644
--- a/vcl/source/filter/jpeg/JpegReader.cxx
+++ b/vcl/source/filter/jpeg/JpegReader.cxx
@@ -28,6 +28,7 @@
#include <vcl/bmpacc.hxx>
#include <vcl/FilterConfigItem.hxx>
#include <vcl/graphicfilter.hxx>
+#include <boost/scoped_array.hpp>
#define JPEG_MIN_READ 512
#define BUFFER_SIZE 4096
@@ -313,7 +314,7 @@ void JPEGReader::FillBitmap()
if( mpAcc->GetBitCount() == 8 )
{
- BitmapColor* pCols = new BitmapColor[ 256 ];
+ boost::scoped_array<BitmapColor> pCols(new BitmapColor[ 256 ]);
for( sal_uInt16 n = 0; n < 256; n++ )
{
@@ -332,8 +333,6 @@ void JPEGReader::FillBitmap()
mpAcc->SetPixel( nY, nX, pCols[ *pTmp++ ] );
}
}
-
- delete[] pCols;
}
else
{
diff --git a/vcl/source/filter/jpeg/jpegc.cxx b/vcl/source/filter/jpeg/jpegc.cxx
index 6cbb589..198aeaf 100644
--- a/vcl/source/filter/jpeg/jpegc.cxx
+++ b/vcl/source/filter/jpeg/jpegc.cxx
@@ -35,6 +35,7 @@ extern "C" {
#include "jpeg.h"
#include <JpegReader.hxx>
#include <JpegWriter.hxx>
+#include <boost/scoped_array.hpp>
struct ErrorManagerStruct
{
@@ -67,7 +68,7 @@ void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, long* pLines,
long nHeight;
long nAlignedWidth;
JSAMPLE* aRangeLimit;
- unsigned char * pScanLineBuffer = NULL;
+ boost::scoped_array<unsigned char> pScanLineBuffer;
long nScanLineBufferComponents = 0;
if ( setjmp( jerr.setjmp_buffer ) )
@@ -152,7 +153,7 @@ void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, long* pLines,
if ( cinfo.out_color_space == JCS_CMYK )
{
nScanLineBufferComponents = cinfo.output_width * 4;
- pScanLineBuffer = new unsigned char[nScanLineBufferComponents];
+ pScanLineBuffer.reset(new unsigned char[nScanLineBufferComponents]);
}
if( pDIB )
@@ -169,11 +170,12 @@ void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, long* pLines,
for ( *pLines = 0; *pLines < nHeight; (*pLines)++ )
{
- if (pScanLineBuffer != NULL)
+ if (pScanLineBuffer)
{ // in other words cinfo.out_color_space == JCS_CMYK
int i;
int j;
- jpeg_read_scanlines( &cinfo, (JSAMPARRAY) &pScanLineBuffer, 1 );
+ unsigned char *pSLB = pScanLineBuffer.get();
+ jpeg_read_scanlines( &cinfo, (JSAMPARRAY) &pSLB, 1 );
// convert CMYK to RGB
for( i=0, j=0; i < nScanLineBufferComponents; i+=4, j+=3 )
{
@@ -208,11 +210,7 @@ void ReadJPEG( JPEGReader* pJPEGReader, void* pInputStream, long* pLines,
jpeg_abort_decompress( &cinfo );
}
- if (pScanLineBuffer != NULL)
- {
- delete[] pScanLineBuffer;
- pScanLineBuffer = NULL;
- }
+ pScanLineBuffer.reset();
jpeg_destroy_decompress( &cinfo );
}
More information about the Libreoffice-commits
mailing list