From b7e30878600b4d03e4102dd743279736c52a70c2 Mon Sep 17 00:00:00 2001 From: Markus Mohrhard Date: Sun, 9 Nov 2014 03:06:35 +0100 Subject: prevent insane memory allocation We release the memory in the next call again. Change-Id: I9cd974f2c1b2381d0a895bea52a8654143862971 --- vcl/inc/impbmp.hxx | 7 +++++++ vcl/source/gdi/impbmp.cxx | 7 +++++++ vcl/source/outdev/bitmap.cxx | 3 +-- 3 files changed, 15 insertions(+), 2 deletions(-) (limited to 'vcl') diff --git a/vcl/inc/impbmp.hxx b/vcl/inc/impbmp.hxx index f6663c5c45d5..bbe80649b23b 100644 --- a/vcl/inc/impbmp.hxx +++ b/vcl/inc/impbmp.hxx @@ -38,6 +38,13 @@ private: public: ImpBitmap(); + /** + * takes ownership + * same as Sequence: + * pBmp = new ImpBitmap; + * pBmp->ImplSetSalBitmap(pBitmap); + */ + ImpBitmap(SalBitmap* pBitmap); ~ImpBitmap(); void ImplSetSalBitmap( SalBitmap* pSalBitmap ); diff --git a/vcl/source/gdi/impbmp.cxx b/vcl/source/gdi/impbmp.cxx index 1ee75d42b442..633cff2a5c64 100644 --- a/vcl/source/gdi/impbmp.cxx +++ b/vcl/source/gdi/impbmp.cxx @@ -31,6 +31,13 @@ ImpBitmap::ImpBitmap() : { } +ImpBitmap::ImpBitmap(SalBitmap* pBitmap) : + mnRefCount ( 1 ), + mnChecksum ( 0 ), + mpSalBitmap ( pBitmap ) +{ +} + ImpBitmap::~ImpBitmap() { delete mpSalBitmap; diff --git a/vcl/source/outdev/bitmap.cxx b/vcl/source/outdev/bitmap.cxx index a191b8b2c703..20e6367ac30c 100644 --- a/vcl/source/outdev/bitmap.cxx +++ b/vcl/source/outdev/bitmap.cxx @@ -457,8 +457,7 @@ Bitmap OutputDevice::GetBitmap( const Point& rSrcPt, const Size& rSize ) const if( pSalBmp ) { - ImpBitmap* pImpBmp = new ImpBitmap; - pImpBmp->ImplSetSalBitmap( pSalBmp ); + ImpBitmap* pImpBmp = new ImpBitmap(pSalBmp); aBmp.ImplSetImpBitmap( pImpBmp ); } } -- cgit