vcl/Library_vclplug_gen.mk | 7 +++++++ vcl/unx/generic/gdi/salbmp.cxx | 37 ++++++++++++++++++++++++++++++++++--- 2 files changed, 41 insertions(+), 3 deletions(-)
New commits: commit 810ab680c60e21660cbb1bfa1893ee6321bfa771 Author: Caolán McNamara <[email protected]> Date: Sat May 5 23:52:18 2012 +0100 valgrind: silence annoying conditional jump warnings from dead scanline space Change-Id: I46f3d61ff85886c44849c22bfda4a3628041d6dd diff --git a/vcl/Library_vclplug_gen.mk b/vcl/Library_vclplug_gen.mk index c9c9bbe..31df6c2 100644 --- a/vcl/Library_vclplug_gen.mk +++ b/vcl/Library_vclplug_gen.mk @@ -132,6 +132,13 @@ $(eval $(call gb_Library_add_defs,vclplug_gen,\ endif endif +$(eval $(call gb_Library_add_defs,vclplug_gen,\ + $(if $(VALGRIND_CFLAGS), \ + $(VALGRIND_CFLAGS) \ + -DHAVE_MEMCHECK_H=1 \ + ) \ +)) + ## handle Xinerama ifneq ($(USE_XINERAMA),NO) ifneq ($(OS),SOLARIS) diff --git a/vcl/unx/generic/gdi/salbmp.cxx b/vcl/unx/generic/gdi/salbmp.cxx index b8b9f42..d48cf98 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&) { commit c6a56e0b7f36b247c6808e3c6640c47599c5b56e Author: Caolán McNamara <[email protected]> Date: Sat May 5 22:56:44 2012 +0100 catch by const ref Change-Id: I20da7ac6dddcc1905b3419df37dd19f162cd8998 diff --git a/vcl/unx/generic/gdi/salbmp.cxx b/vcl/unx/generic/gdi/salbmp.cxx index 013bdd6..b8b9f42 100644 --- a/vcl/unx/generic/gdi/salbmp.cxx +++ b/vcl/unx/generic/gdi/salbmp.cxx @@ -137,7 +137,7 @@ BitmapBuffer* X11SalBitmap::ImplCreateDIB( { pDIB = new BitmapBuffer; } - catch( std::bad_alloc& ) + catch (const std::bad_alloc&) { pDIB = NULL; } @@ -187,7 +187,7 @@ BitmapBuffer* X11SalBitmap::ImplCreateDIB( { pDIB->mpBits = new sal_uInt8[ pDIB->mnScanlineSize * pDIB->mnHeight ]; } - catch(std::bad_alloc&) + catch (const std::bad_alloc&) { delete pDIB; pDIB = NULL; @@ -705,7 +705,7 @@ bool X11SalBitmap::Create( const SalBitmap& rSSalBmp ) { mpDIB->mpBits = new sal_uInt8[ mpDIB->mnScanlineSize * mpDIB->mnHeight ]; } - catch( std::bad_alloc& ) + catch (const std::bad_alloc&) { delete mpDIB; mpDIB = NULL;
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
