[ros-diffs] [fireball] 42288: - GDIO_GetObjPtr: Don't go through handles array without obtaining a lock.

fireball at svn.reactos.org fireball at svn.reactos.org
Wed Jul 29 17:29:50 CEST 2009


Author: fireball
Date: Wed Jul 29 17:29:50 2009
New Revision: 42288

URL: http://svn.reactos.org/svn/reactos?rev=42288&view=rev
Log:
- GDIO_GetObjPtr: Don't go through handles array without obtaining a lock.

Modified:
    branches/arwinss/reactos/subsystems/win32/win32k/gre/gdiobj.c

Modified: branches/arwinss/reactos/subsystems/win32/win32k/gre/gdiobj.c
URL: http://svn.reactos.org/svn/reactos/branches/arwinss/reactos/subsystems/win32/win32k/gre/gdiobj.c?rev=42288&r1=42287&r2=42288&view=diff
==============================================================================
--- branches/arwinss/reactos/subsystems/win32/win32k/gre/gdiobj.c [iso-8859-1] (original)
+++ branches/arwinss/reactos/subsystems/win32/win32k/gre/gdiobj.c [iso-8859-1] Wed Jul 29 17:29:50 2009
@@ -167,8 +167,8 @@
     GDIOBJHDR *ptr = NULL;
     int i;
 
-    //KeEnterCriticalRegion();
-    //ExAcquireResourceExclusiveLite(GDI_resource, TRUE);
+    KeEnterCriticalRegion();
+    ExAcquireResourceExclusiveLite(GDI_resource, TRUE);
 
     i = ((UINT_PTR)handle >> 2) - FIRST_LARGE_HANDLE;
     if (i >= 0 && i < MAX_LARGE_HANDLES)
@@ -179,11 +179,12 @@
 
     if (!ptr)
     {
-        //ExReleaseResourceLite(GDI_resource);
-        //KeLeaveCriticalRegion();
         DPRINT1( "Invalid handle %p\n", handle );
     }
     //else TRACE("(%p): enter %d\n", handle, GDI_level.crst.RecursionCount);
+
+    ExReleaseResourceLite(GDI_resource);
+    KeLeaveCriticalRegion();
 
     return ptr;
 }




More information about the Ros-diffs mailing list