summaryrefslogtreecommitdiff
path: root/vcl/headless
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-01-21 20:47:12 +0000
committerCaolán McNamara <caolanm@redhat.com>2016-01-21 20:50:18 +0000
commitd363a9e20db9b404ff81ca673268f2abef06e3f0 (patch)
tree5b9c1eccd821c0f048168f83989e254ed85c33f3 /vcl/headless
parent4f91e4f3f9e80b4b258f07d29cc2ea490d8e7417 (diff)
new[] failed but memset of requested len called anyway
recent regression from commit a73e606b8cd714520285b4e40890db9fd27d7ba5 Date: Thu Jan 21 16:04:28 2016 +0100 Quickfix for deterministic SvpSalBitmap checksums move the memset (and similar memcpy) inside try block Change-Id: I51d76777f91664459deb777a5dfafae80203af57
Diffstat (limited to 'vcl/headless')
-rw-r--r--vcl/headless/svpbmp.cxx11
1 files changed, 5 insertions, 6 deletions
diff --git a/vcl/headless/svpbmp.cxx b/vcl/headless/svpbmp.cxx
index 293b222b8f8f..59d5964a0977 100644
--- a/vcl/headless/svpbmp.cxx
+++ b/vcl/headless/svpbmp.cxx
@@ -121,17 +121,17 @@ BitmapBuffer* ImplCreateDIB(
pDIB->maPalette.SetEntryCount( nColors );
}
- auto size = pDIB->mnScanlineSize * pDIB->mnHeight;
try
{
+ size_t size = pDIB->mnScanlineSize * pDIB->mnHeight;
pDIB->mpBits = new sal_uInt8[size];
+ std::memset(pDIB->mpBits, 0, size);
}
catch (const std::bad_alloc&)
{
delete pDIB;
pDIB = nullptr;
}
- std::memset(pDIB->mpBits, 0, size);
}
}
else
@@ -167,16 +167,15 @@ bool SvpSalBitmap::Create(const SalBitmap& rBmp)
// TODO: get rid of this when BitmapBuffer gets copy constructor
try
{
- mpDIB->mpBits = new sal_uInt8[ mpDIB->mnScanlineSize * mpDIB->mnHeight ];
+ size_t size = mpDIB->mnScanlineSize * mpDIB->mnHeight;
+ mpDIB->mpBits = new sal_uInt8[size];
+ std::memcpy(mpDIB->mpBits, rSalBmp.mpDIB->mpBits, size);
}
catch (const std::bad_alloc&)
{
delete mpDIB;
mpDIB = nullptr;
}
-
- if (mpDIB)
- memcpy(mpDIB->mpBits, rSalBmp.mpDIB->mpBits, mpDIB->mnScanlineSize * mpDIB->mnHeight);
}
return !rSalBmp.mpDIB || (rSalBmp.mpDIB && mpDIB != nullptr);