summaryrefslogtreecommitdiff
path: root/vcl/win
diff options
context:
space:
mode:
authorOliver Bolte <obo@openoffice.org>2006-03-22 09:24:25 +0000
committerOliver Bolte <obo@openoffice.org>2006-03-22 09:24:25 +0000
commitf092fa08ce6e91380f01eab73588eebb9c968de9 (patch)
tree18242a29de5c09f8b3ea65b5365782d596b2ef72 /vcl/win
parent51c3f3b38c9371a9e0b34cdc133bb1c13565a7c0 (diff)
INTEGRATION: CWS vcl55 (1.8.132); FILE MERGED
2006/03/06 14:08:01 hdu 1.8.132.1: #132892# be more defensive in WinSalVirtualDevice destructor
Diffstat (limited to 'vcl/win')
-rw-r--r--vcl/win/source/gdi/salvd.cxx24
1 files changed, 9 insertions, 15 deletions
diff --git a/vcl/win/source/gdi/salvd.cxx b/vcl/win/source/gdi/salvd.cxx
index 899cc069820c..892be519634b 100644
--- a/vcl/win/source/gdi/salvd.cxx
+++ b/vcl/win/source/gdi/salvd.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: salvd.cxx,v $
*
- * $Revision: 1.8 $
+ * $Revision: 1.9 $
*
- * last change: $Author: rt $ $Date: 2005-11-10 15:50:03 $
+ * last change: $Author: obo $ $Date: 2006-03-22 10:24:25 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -180,10 +180,15 @@ WinSalVirtualDevice::WinSalVirtualDevice()
WinSalVirtualDevice::~WinSalVirtualDevice()
{
+ // remove VirDev from list of virtual devices
SalData* pSalData = GetSalData();
+ WinSalVirtualDevice** ppVirDev = &pSalData->mpFirstVD;
+ for(; (*ppVirDev != this) && *ppVirDev; ppVirDev = &(*ppVirDev)->mpNext );
+ if( *ppVirDev )
+ *ppVirDev = mpNext;
// destroy saved DC
- if ( mpGraphics->mhDefPal )
+ if( mpGraphics->mhDefPal )
SelectPalette( mpGraphics->mhDC, mpGraphics->mhDefPal, TRUE );
ImplSalDeInitGraphics( mpGraphics );
if( mhDefBmp )
@@ -193,18 +198,7 @@ WinSalVirtualDevice::~WinSalVirtualDevice()
if( mhBmp )
DeleteBitmap( mhBmp );
delete mpGraphics;
-
- // remove VirDev from VirDevList
- if ( this == pSalData->mpFirstVD )
- pSalData->mpFirstVD = mpNext;
- else
- {
- WinSalVirtualDevice* pTempVD = pSalData->mpFirstVD;
- while ( pTempVD->mpNext != this )
- pTempVD = pTempVD->mpNext;
-
- pTempVD->mpNext = mpNext;
- }
+ mpGraphics = NULL;
}
// -----------------------------------------------------------------------