On Wed, Dec 16, 2009 at 5:07 PM, Lei Zhang thestig@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.