Author: jimtabor Date: Tue Jun 3 20:52:13 2008 New Revision: 33845
URL: http://svn.reactos.org/svn/reactos?rev=33845&view=rev Log: Check to see if the list is empty.
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/windc.c
Modified: trunk/reactos/subsystems/win32/win32k/ntuser/windc.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ntu... ============================================================================== --- trunk/reactos/subsystems/win32/win32k/ntuser/windc.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/ntuser/windc.c [iso-8859-1] Tue Jun 3 20:52:13 2008 @@ -575,7 +575,6 @@ { DCE *ret; BOOL Hit = FALSE; - NTSTATUS Status = STATUS_SUCCESS;
if (NULL == pdce) return NULL;
@@ -588,7 +587,7 @@ if (Force && !GDIOBJ_OwnedByCurrentProcess(pdce->hDC)) { DPRINT1("Change ownership for DCE!\n"); - + // Note: Windows sets W32PF_OWNDCCLEANUP and moves on. if (!IsObjectDead((HGDIOBJ) pdce->hDC)) DC_SetOwnership( pdce->hDC, PsGetCurrentProcess()); else @@ -604,21 +603,14 @@ { NtGdiDeleteObject(pdce->hClipRgn); } - // Temp fix until we know where the problem is, most likely in windc. - _SEH_TRY - { - RemoveEntryList(&pdce->List); - } - _SEH_HANDLE - { - Status = _SEH_GetExceptionCode(); - } - _SEH_END - if (!NT_SUCCESS(Status)) - { - SetLastNtError(Status); - DPRINT1("CRASHED DCE! -> %x\n" , pdce); - return 0; // Give it up and bail~! + + RemoveEntryList(&pdce->List); + + if (IsListEmpty(&pdce->List)) + { + DPRINT1("List is Empty! DCE! -> %x\n" , pdce); + FirstDce = NULL; + ret = NULL; }
ExFreePoolWithTag(pdce, TAG_PDCE);