summaryrefslogtreecommitdiff
path: root/vcl/source/gdi/salmisc.cxx
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2015-11-10 13:36:34 +0200
committerNoel Grandin <noelgrandin@gmail.com>2015-11-11 07:16:20 +0000
commitdb17d3c17c40d6b0e92392cf3c6e343d1d17b771 (patch)
tree9d562fcf764e7717df9585ef0e735a12ea4aaa16 /vcl/source/gdi/salmisc.cxx
parent2ce9e4be4a438203382cb9cca824ce3e90647f3a (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.cxx34
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;
}