gdiplus: Do not access freed memory in a test.
authorLei Zhang <thestig@google.com>
Mon, 21 Apr 2008 23:15:58 +0000 (16:15 -0700)
committerAlexandre Julliard <julliard@winehq.org>
Tue, 22 Apr 2008 09:56:32 +0000 (11:56 +0200)
dlls/gdiplus/tests/graphics.c

index edd98d73c47939b2df80a36b4e9ca8f0a3f0bb14..77f1597a1dfc2b68091841cc3ea333795fa38855 100644 (file)
@@ -72,20 +72,30 @@ static void check_no_duplicates(node * log)
 {
     INT dups = 0;
     node * temp = NULL;
+    node * temp2 = NULL;
+    node * orig = log;
 
     if(!log)
         goto end;
 
     do{
-        HeapFree(GetProcessHeap(), 0, temp);
         temp = log;
-        while((temp = temp->next))
-            if(log->data == temp->data)
+        while((temp = temp->next)){
+            if(log->data == temp->data){
                 dups++;
-
+                break;
+            }
+            if(dups > 0)
+                break;
+        }
     }while((log = log->next));
 
-    HeapFree(GetProcessHeap(), 0, temp);
+    temp = orig;
+    do{
+        temp2 = temp->next;
+        HeapFree(GetProcessHeap(), 0, temp);
+        temp = temp2;
+    }while(temp);
 
 end:
     expect(0, dups);