Module: wine Branch: master Commit: c89211336b9e4309d18819f241e0f77ff882a56e URL: http://source.winehq.org/git/wine.git/?a=commit;h=c89211336b9e4309d18819f241... Author: Lei Zhang <thestig(a)google.com> Date: Thu Dec 17 01:53:38 2009 -0800 secur32: Fix memory leak in SECUR32_addPackages. --- dlls/secur32/secur32.c | 13 ++++++++----- 1 files changed, 8 insertions(+), 5 deletions(-) diff --git a/dlls/secur32/secur32.c b/dlls/secur32/secur32.c index 4171778..f626617 100644 --- a/dlls/secur32/secur32.c +++ b/dlls/secur32/secur32.c @@ -666,9 +666,6 @@ SecurePackage *SECUR32_findPackageA(PCSTR packageName) static void SECUR32_freeProviders(void) { - SecurePackage *package; - SecureProvider *provider; - TRACE("\n"); EnterCriticalSection(&cs); @@ -676,10 +673,13 @@ static void SECUR32_freeProviders(void) if (packageTable) { - LIST_FOR_EACH_ENTRY(package, &packageTable->table, SecurePackage, entry) + SecurePackage *package, *package_next; + LIST_FOR_EACH_ENTRY_SAFE(package, package_next, &packageTable->table, + SecurePackage, entry) { HeapFree(GetProcessHeap(), 0, package->infoW.Name); HeapFree(GetProcessHeap(), 0, package->infoW.Comment); + HeapFree(GetProcessHeap(), 0, package); } HeapFree(GetProcessHeap(), 0, packageTable); @@ -688,11 +688,14 @@ static void SECUR32_freeProviders(void) if (providerTable) { - LIST_FOR_EACH_ENTRY(provider, &providerTable->table, SecureProvider, entry) + SecureProvider *provider, *provider_next; + LIST_FOR_EACH_ENTRY_SAFE(provider, provider_next, &providerTable->table, + SecureProvider, entry) { HeapFree(GetProcessHeap(), 0, provider->moduleName); if (provider->lib) FreeLibrary(provider->lib); + HeapFree(GetProcessHeap(), 0, provider); } HeapFree(GetProcessHeap(), 0, providerTable);