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/nt…
==============================================================================
--- 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);