diff options
author | Noel Grandin <noel@peralex.com> | 2015-11-10 13:36:34 +0200 |
---|---|---|
committer | Noel Grandin <noelgrandin@gmail.com> | 2015-11-11 07:16:20 +0000 |
commit | db17d3c17c40d6b0e92392cf3c6e343d1d17b771 (patch) | |
tree | 9d562fcf764e7717df9585ef0e735a12ea4aaa16 /vcl/source/gdi/salmisc.cxx | |
parent | 2ce9e4be4a438203382cb9cca824ce3e90647f3a (diff) |
new loplugin: memoryvar
detect when we can convert a new/delete sequence on a local variable to
use std::unique_ptr
Change-Id: Iecae4e4197eccdfacfce2eed39aa4a69e4a660bc
Reviewed-on: https://gerrit.libreoffice.org/19884
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Diffstat (limited to 'vcl/source/gdi/salmisc.cxx')
-rw-r--r-- | vcl/source/gdi/salmisc.cxx | 34 |
1 files changed, 12 insertions, 22 deletions
diff --git a/vcl/source/gdi/salmisc.cxx b/vcl/source/gdi/salmisc.cxx index a28c4b0fd51b..6141b2aae55e 100644 --- a/vcl/source/gdi/salmisc.cxx +++ b/vcl/source/gdi/salmisc.cxx @@ -378,27 +378,23 @@ BitmapBuffer* StretchAndConvert( if( bFastConvert ) return pDstBuffer; - Scanline* pSrcScan = nullptr; - Scanline* pDstScan = nullptr; - long* pMapX = nullptr; - long* pMapY = nullptr; + std::unique_ptr<Scanline[]> pSrcScan; + std::unique_ptr<Scanline[]> pDstScan; + std::unique_ptr<long[]> pMapX; + std::unique_ptr<long[]> pMapY; try { - pSrcScan = new Scanline[rSrcBuffer.mnHeight]; - pDstScan = new Scanline[pDstBuffer->mnHeight]; - pMapX = new long[pDstBuffer->mnWidth]; - pMapY = new long[pDstBuffer->mnHeight]; + pSrcScan.reset(new Scanline[rSrcBuffer.mnHeight]); + pDstScan.reset(new Scanline[pDstBuffer->mnHeight]); + pMapX.reset(new long[pDstBuffer->mnWidth]); + pMapY.reset(new long[pDstBuffer->mnHeight]); } catch( const std::bad_alloc& ) { // memory exception, clean up // remark: the buffer ptr causing the exception // is still NULL here - delete[] pSrcScan; - delete[] pDstScan; - delete[] pMapX; - delete[] pMapY; delete pDstBuffer; return nullptr; } @@ -461,30 +457,24 @@ BitmapBuffer* StretchAndConvert( if( rSrcBuffer.mnBitCount <= 8 && pDstBuffer->mnBitCount <= 8 ) { ImplPALToPAL( rSrcBuffer, *pDstBuffer, pFncGetPixel, pFncSetPixel, - pSrcScan, pDstScan, pMapX, pMapY ); + pSrcScan.get(), pDstScan.get(), pMapX.get(), pMapY.get() ); } else if( rSrcBuffer.mnBitCount <= 8 && pDstBuffer->mnBitCount > 8 ) { ImplPALToTC( rSrcBuffer, *pDstBuffer, pFncGetPixel, pFncSetPixel, - pSrcScan, pDstScan, pMapX, pMapY ); + pSrcScan.get(), pDstScan.get(), pMapX.get(), pMapY.get() ); } else if( rSrcBuffer.mnBitCount > 8 && pDstBuffer->mnBitCount > 8 ) { ImplTCToTC( rSrcBuffer, *pDstBuffer, pFncGetPixel, pFncSetPixel, - pSrcScan, pDstScan, pMapX, pMapY ); + pSrcScan.get(), pDstScan.get(), pMapX.get(), pMapY.get() ); } else { ImplTCToPAL( rSrcBuffer, *pDstBuffer, pFncGetPixel, pFncSetPixel, - pSrcScan, pDstScan, pMapX, pMapY ); + pSrcScan.get(), pDstScan.get(), pMapX.get(), pMapY.get() ); } - // cleanup - delete[] pSrcScan; - delete[] pDstScan; - delete[] pMapX; - delete[] pMapY; - return pDstBuffer; } |