diff options
author | Mark Page <aptitude@btconnect.com> | 2016-11-30 09:27:13 +0000 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2016-11-30 22:01:22 +0000 |
commit | 5de4492eeedc1e23f5f6ac4a775e943c240dced2 (patch) | |
tree | 8edc017cb4fe0000175ef567caf33a30d5019b8e | |
parent | 52d409f0d657f314a53f945c9ffb5b8025bea034 (diff) |
Use smart pointers for allocated objects in the gif loader
Change-Id: Ib9d3bc05fbccc882df8913d3ffcb36be6a9f06dd
Reviewed-on: https://gerrit.libreoffice.org/31401
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Tested-by: Michael Stahl <mstahl@redhat.com>
-rw-r--r-- | vcl/source/filter/igif/gifread.cxx | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/vcl/source/filter/igif/gifread.cxx b/vcl/source/filter/igif/gifread.cxx index f767f3b1fb5d..75889707e634 100644 --- a/vcl/source/filter/igif/gifread.cxx +++ b/vcl/source/filter/igif/gifread.cxx @@ -20,6 +20,7 @@ #include "decode.hxx" #include "gifread.hxx" #include <memory> +#include <o3tl/make_unique.hxx> #define NO_PENDING( rStm ) ( ( rStm ).GetError() != ERRCODE_IO_PENDING ) @@ -55,8 +56,8 @@ class GIFReader : public GraphicReader BitmapPalette aGPalette; BitmapPalette aLPalette; SvStream& rIStm; - sal_uInt8* pSrcBuf; - GIFLZWDecompressor* pDecomp; + std::vector<sal_uInt8> aSrcBuf; + std::unique_ptr<GIFLZWDecompressor> pDecomp; BitmapWriteAccess* pAcc8; BitmapWriteAccess* pAcc1; long nYAcc; @@ -112,7 +113,6 @@ GIFReader::GIFReader( SvStream& rStm ) : aGPalette ( 256 ) , aLPalette ( 256 ) , rIStm ( rStm ) - , pDecomp ( nullptr ) , pAcc8 ( nullptr ) , pAcc1 ( nullptr ) , nYAcc ( 0 ) @@ -143,7 +143,7 @@ GIFReader::GIFReader( SvStream& rStm ) , cNonTransIndex1 ( 0 ) { maUpperName = "SVIGIF"; - pSrcBuf = new sal_uInt8[ 256 ]; + aSrcBuf.resize(256); // Memory buffer for ReadNextBlock ClearImageExtensions(); } @@ -156,8 +156,6 @@ GIFReader::~GIFReader() if( pAcc8 ) Bitmap::ReleaseAccess( pAcc8 ); - - delete[] pSrcBuf; } void GIFReader::ClearImageExtensions() @@ -493,7 +491,7 @@ sal_uLong GIFReader::ReadNextBlock() nRet = 2UL; else { - rIStm.ReadBytes( pSrcBuf, cBlockSize ); + rIStm.ReadBytes( aSrcBuf.data(), cBlockSize ); if( NO_PENDING( rIStm ) ) { @@ -502,7 +500,7 @@ sal_uLong GIFReader::ReadNextBlock() else { bool bEOI; - sal_uInt8* pTarget = pDecomp->DecompressBlock( pSrcBuf, cBlockSize, nRead, bEOI ); + sal_uInt8* pTarget = pDecomp->DecompressBlock( aSrcBuf.data(), cBlockSize, nRead, bEOI ); nRet = ( bEOI ? 3 : 1 ); @@ -771,7 +769,7 @@ bool GIFReader::ProcessGIF() else if( NO_PENDING( rIStm ) ) { bRead = true; - pDecomp = new GIFLZWDecompressor( cDataSize ); + pDecomp = o3tl::make_unique<GIFLZWDecompressor>( cDataSize ); eActAction = NEXT_BLOCK_READING; bOverreadBlock = false; } @@ -802,7 +800,7 @@ bool GIFReader::ProcessGIF() { if( nRet == 2UL ) { - delete pDecomp; + pDecomp.reset(); CreateNewBitmaps(); eActAction = MARKER_READING; ClearImageExtensions(); @@ -814,7 +812,7 @@ bool GIFReader::ProcessGIF() } else { - delete pDecomp; + pDecomp.reset(); CreateNewBitmaps(); eActAction = ABORT_READING; ClearImageExtensions(); |