diff options
author | Caolán McNamara <caolanm@redhat.com> | 2012-05-05 23:52:18 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2012-05-06 10:28:08 +0100 |
commit | 810ab680c60e21660cbb1bfa1893ee6321bfa771 (patch) | |
tree | 888d8e4258b9687398356cb2d86ecc1acc727713 /vcl/unx | |
parent | c6a56e0b7f36b247c6808e3c6640c47599c5b56e (diff) |
valgrind: silence annoying conditional jump warnings from dead scanline space
Change-Id: I46f3d61ff85886c44849c22bfda4a3628041d6dd
Diffstat (limited to 'vcl/unx')
-rw-r--r-- | vcl/unx/generic/gdi/salbmp.cxx | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/vcl/unx/generic/gdi/salbmp.cxx b/vcl/unx/generic/gdi/salbmp.cxx index b8b9f42f9302..d48cf985fcc5 100644 --- a/vcl/unx/generic/gdi/salbmp.cxx +++ b/vcl/unx/generic/gdi/salbmp.cxx @@ -53,6 +53,10 @@ #include <unx/salinst.h> #include <unx/x11/xlimits.hxx> +#if defined(HAVE_MEMCHECK_H) +#include <memcheck.h> +#endif + // ----------- // - Defines - // ----------- @@ -113,6 +117,21 @@ void X11SalBitmap::ImplRemovedFromCache() delete mpDDB, mpDDB = NULL; } +#if defined(HAVE_MEMCHECK_H) +void blankExtraSpace(BitmapBuffer* pDIB) +{ + size_t nExtraSpaceInScanLine = pDIB->mnScanlineSize - pDIB->mnWidth * pDIB->mnBitCount / 8; + if (nExtraSpaceInScanLine) + { + for (long i = 0; i < pDIB->mnHeight; ++i) + { + sal_uInt8 *pRow = pDIB->mpBits + (i * pDIB->mnScanlineSize); + memset(pRow + (pDIB->mnScanlineSize - nExtraSpaceInScanLine), 0, nExtraSpaceInScanLine); + } + } +} +#endif + // ----------------------------------------------------------------------------- BitmapBuffer* X11SalBitmap::ImplCreateDIB( @@ -186,6 +205,10 @@ BitmapBuffer* X11SalBitmap::ImplCreateDIB( try { pDIB->mpBits = new sal_uInt8[ pDIB->mnScanlineSize * pDIB->mnHeight ]; +#if defined(HAVE_MEMCHECK_H) + if (RUNNING_ON_VALGRIND) + blankExtraSpace(pDIB); +#endif } catch (const std::bad_alloc&) { @@ -530,6 +553,10 @@ XImage* X11SalBitmap::ImplCreateXImage( if( pDstBuf && pDstBuf->mpBits ) { +#if defined(HAVE_MEMCHECK_H) + if (RUNNING_ON_VALGRIND) + blankExtraSpace(pDstBuf); +#endif // set data in buffer as data member in pImage pImage->data = (char*) pDstBuf->mpBits; @@ -704,6 +731,10 @@ bool X11SalBitmap::Create( const SalBitmap& rSSalBmp ) try { mpDIB->mpBits = new sal_uInt8[ mpDIB->mnScanlineSize * mpDIB->mnHeight ]; +#if defined(HAVE_MEMCHECK_H) + if (RUNNING_ON_VALGRIND) + blankExtraSpace(mpDIB); +#endif } catch (const std::bad_alloc&) { |