summaryrefslogtreecommitdiff
path: root/vcl/headless
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-04-23 14:56:15 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-04-25 10:24:25 +0200
commit2351701d533c4b489d633b9602930be57caff801 (patch)
treea5eea9c0614be792a9bb29099d3a0147e02b28df /vcl/headless
parent7c9d8afd913c17100aa4185e3b044137f225c81f (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.cxx32
-rw-r--r--vcl/headless/svpgdi.cxx11
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());