diff options
author | Oliver Bolte <obo@openoffice.org> | 2006-03-22 09:24:25 +0000 |
---|---|---|
committer | Oliver Bolte <obo@openoffice.org> | 2006-03-22 09:24:25 +0000 |
commit | f092fa08ce6e91380f01eab73588eebb9c968de9 (patch) | |
tree | 18242a29de5c09f8b3ea65b5365782d596b2ef72 /vcl/win | |
parent | 51c3f3b38c9371a9e0b34cdc133bb1c13565a7c0 (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.cxx | 24 |
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; } // ----------------------------------------------------------------------- |