[ros-diffs] [jimtabor] 33845: Check to see if the list is empty.

jimtabor at svn.reactos.org jimtabor at svn.reactos.org
Wed Jun 4 03:52:15 CEST 2008


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/ntuser/windc.c?rev=33845&r1=33844&r2=33845&view=diff
==============================================================================
--- 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);



More information about the Ros-diffs mailing list