Allocate span memory for every clipping type, not only for one
authorGregor Schneider <grschneider@gmail.com>
Sun, 16 Aug 2009 19:20:50 +0000 (19:20 +0000)
committerGregor Schneider <grschneider@gmail.com>
Sun, 16 Aug 2009 19:20:50 +0000 (19:20 +0000)
svn path=/trunk/; revision=42741

reactos/subsystems/win32/win32k/eng/clip.c

index d3a97f2..b5453cd 100644 (file)
@@ -406,18 +406,21 @@ ClipobjToSpans(
 
     ASSERT(Boundary->top <= Boundary->bottom && Boundary->left <= Boundary->right);
 
-    *Spans = NULL;
+    *Count = Boundary->bottom - Boundary->top;
+    if (*Count > 0)
+    {
+        *Spans = ExAllocatePoolWithTag(PagedPool, *Count * sizeof(SPAN), TAG_CLIP);
+        if (NULL == *Spans)
+        {
+            *Count = 0;
+            return FALSE;
+        }
+    }
+
     if (NULL == ClipRegion || DC_TRIVIAL == ClipRegion->iDComplexity)
     {
-        *Count = Boundary->bottom - Boundary->top;
         if (0 != *Count)
         {
-            *Spans = ExAllocatePoolWithTag(PagedPool, *Count * sizeof(SPAN), TAG_CLIP);
-            if (NULL == *Spans)
-            {
-                *Count = 0;
-                return FALSE;
-            }
             for (i = 0; i < Boundary->bottom - Boundary->top; i++)
             {
                 (*Spans)[i].X = Boundary->left;