[PATCH] secur32: Fix memory leak in SECUR32_addPackages. (valgrind)

James Hawkins truiken at gmail.com
Wed Dec 16 19:13:01 CST 2009


On Wed, Dec 16, 2009 at 5:07 PM, Lei Zhang <thestig at google.com> wrote:
> Hi, this is for bug 21045.
>

+        SecurePackage *prev_package = NULL;
         LIST_FOR_EACH_ENTRY(package, &packageTable->table,
SecurePackage, entry)
         {
+            if (prev_package)
+                HeapFree(GetProcessHeap(), 0, prev_package);
+            prev_package = package;
             HeapFree(GetProcessHeap(), 0, package->infoW.Name);
             HeapFree(GetProcessHeap(), 0, package->infoW.Comment);
         }
+        if (prev_package)
+            HeapFree(GetProcessHeap(), 0, prev_package);


I believe the construct you're looking for is LIST_FOR_EACH_SAFE.
grep through the code for examples on using that to safely free and
remove elements from a list.

-- 
James Hawkins



More information about the wine-devel mailing list