diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2018-04-23 14:56:15 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2018-04-25 10:24:25 +0200 |
commit | 2351701d533c4b489d633b9602930be57caff801 (patch) | |
tree | a5eea9c0614be792a9bb29099d3a0147e02b28df /vcl/headless | |
parent | 7c9d8afd913c17100aa4185e3b044137f225c81f (diff) |
loplugin:useuniqueptr pass BitmapBuffer around via std::unique_ptr
Change-Id: I0a20e7d3816714e42d6863fff27734dd08ae24ae
Reviewed-on: https://gerrit.libreoffice.org/53357
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'vcl/headless')
-rw-r--r-- | vcl/headless/svpbmp.cxx | 32 | ||||
-rw-r--r-- | vcl/headless/svpgdi.cxx | 11 |
2 files changed, 16 insertions, 27 deletions
diff --git a/vcl/headless/svpbmp.cxx b/vcl/headless/svpbmp.cxx index 3228e03bf036..ed74e702fbee 100644 --- a/vcl/headless/svpbmp.cxx +++ b/vcl/headless/svpbmp.cxx @@ -38,7 +38,7 @@ SvpSalBitmap::~SvpSalBitmap() Destroy(); } -BitmapBuffer* ImplCreateDIB( +std::unique_ptr<BitmapBuffer> ImplCreateDIB( const Size& rSize, sal_uInt16 nBitCount, const BitmapPalette& rPal) @@ -56,11 +56,11 @@ BitmapBuffer* ImplCreateDIB( if (!rSize.Width() || !rSize.Height()) return nullptr; - BitmapBuffer* pDIB = nullptr; + std::unique_ptr<BitmapBuffer> pDIB; try { - pDIB = new BitmapBuffer; + pDIB.reset(new BitmapBuffer); } catch (const std::bad_alloc&) { @@ -115,14 +115,12 @@ BitmapBuffer* ImplCreateDIB( if (bFail) { SAL_WARN("vcl.gdi", "checked multiply failed"); - delete pDIB; return nullptr; } pDIB->mnScanlineSize = AlignedWidth4Bytes(nScanlineBase); if (pDIB->mnScanlineSize < nScanlineBase/8) { SAL_WARN("vcl.gdi", "scanline calculation wraparound"); - delete pDIB; return nullptr; } pDIB->mnBitCount = nBitCount; @@ -138,7 +136,6 @@ BitmapBuffer* ImplCreateDIB( SAL_WARN_IF(bFail, "vcl.gdi", "checked multiply failed"); if (bFail || size > SAL_MAX_INT32/2) { - delete pDIB; return nullptr; } @@ -148,8 +145,7 @@ BitmapBuffer* ImplCreateDIB( #ifdef __SANITIZE_ADDRESS__ if (!pDIB->mpBits) { // can only happen with ASAN allocator_may_return_null=1 - delete pDIB; - pDIB = nullptr; + pDIB.reset(); } else #endif @@ -159,17 +155,16 @@ BitmapBuffer* ImplCreateDIB( } catch (const std::bad_alloc&) { - delete pDIB; - pDIB = nullptr; + pDIB.reset(); } return pDIB; } -void SvpSalBitmap::Create(BitmapBuffer *pBuf) +void SvpSalBitmap::Create(std::unique_ptr<BitmapBuffer> pBuf) { Destroy(); - mpDIB = pBuf; + mpDIB = std::move(pBuf); } bool SvpSalBitmap::Create(const Size& rSize, sal_uInt16 nBitCount, const BitmapPalette& rPal) @@ -188,13 +183,12 @@ bool SvpSalBitmap::Create(const SalBitmap& rBmp) if (rSalBmp.mpDIB) { // TODO: reference counting... - mpDIB = new BitmapBuffer( *rSalBmp.mpDIB ); + mpDIB.reset(new BitmapBuffer( *rSalBmp.mpDIB )); const size_t size = mpDIB->mnScanlineSize * mpDIB->mnHeight; if (size > SAL_MAX_INT32/2) { - delete mpDIB; - mpDIB = nullptr; + mpDIB.reset(); return false; } @@ -206,8 +200,7 @@ bool SvpSalBitmap::Create(const SalBitmap& rBmp) } catch (const std::bad_alloc&) { - delete mpDIB; - mpDIB = nullptr; + mpDIB.reset(); } } @@ -236,8 +229,7 @@ void SvpSalBitmap::Destroy() if (mpDIB) { delete[] mpDIB->mpBits; - delete mpDIB; - mpDIB = nullptr; + mpDIB.reset(); } } @@ -268,7 +260,7 @@ sal_uInt16 SvpSalBitmap::GetBitCount() const BitmapBuffer* SvpSalBitmap::AcquireBuffer(BitmapAccessMode) { - return mpDIB; + return mpDIB.get(); } void SvpSalBitmap::ReleaseBuffer(BitmapBuffer*, BitmapAccessMode nMode) diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx index 7543bc69c760..9a3e9247659c 100644 --- a/vcl/headless/svpgdi.cxx +++ b/vcl/headless/svpgdi.cxx @@ -134,7 +134,7 @@ namespace } } - BitmapBuffer* FastConvert24BitRgbTo32BitCairo(const BitmapBuffer* pSrc) + std::unique_ptr<BitmapBuffer> FastConvert24BitRgbTo32BitCairo(const BitmapBuffer* pSrc) { if (pSrc == nullptr) return nullptr; @@ -142,7 +142,7 @@ namespace assert(pSrc->mnFormat == SVP_24BIT_FORMAT); const long nWidth = pSrc->mnWidth; const long nHeight = pSrc->mnHeight; - BitmapBuffer* pDst = new BitmapBuffer; + std::unique_ptr<BitmapBuffer> pDst(new BitmapBuffer); pDst->mnFormat = (ScanlineFormat::N32BitTcArgb | ScanlineFormat::TopDown); pDst->mnWidth = nWidth; pDst->mnHeight = nHeight; @@ -156,7 +156,6 @@ namespace { SAL_WARN("vcl.gdi", "checked multiply failed"); pDst->mpBits = nullptr; - delete pDst; return nullptr; } @@ -165,7 +164,6 @@ namespace { SAL_WARN("vcl.gdi", "scanline calculation wraparound"); pDst->mpBits = nullptr; - delete pDst; return nullptr; } @@ -177,7 +175,6 @@ namespace { // memory exception, clean up pDst->mpBits = nullptr; - delete pDst; return nullptr; } @@ -242,10 +239,10 @@ namespace const BitmapBuffer* pSrc = rSrcBmp.GetBuffer(); const SalTwoRect aTwoRect = { 0, 0, pSrc->mnWidth, pSrc->mnHeight, 0, 0, pSrc->mnWidth, pSrc->mnHeight }; - BitmapBuffer* pTmp = (pSrc->mnFormat == SVP_24BIT_FORMAT + std::unique_ptr<BitmapBuffer> pTmp = (pSrc->mnFormat == SVP_24BIT_FORMAT ? FastConvert24BitRgbTo32BitCairo(pSrc) : StretchAndConvert(*pSrc, aTwoRect, SVP_CAIRO_FORMAT)); - aTmpBmp.Create(pTmp); + aTmpBmp.Create(std::move(pTmp)); assert(aTmpBmp.GetBitCount() == 32); source = SvpSalGraphics::createCairoSurface(aTmpBmp.GetBuffer()); |