Eric Pouech : advpack: Plug a couple of memory leaks.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Oct 23 06:12:25 CDT 2006
Module: wine
Branch: master
Commit: ea2f60160c98456daf81b60119feecdc676d2bbb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ea2f60160c98456daf81b60119feecdc676d2bbb
Author: Eric Pouech <eric.pouech at wanadoo.fr>
Date: Sat Oct 21 08:49:10 2006 +0200
advpack: Plug a couple of memory leaks.
---
dlls/advpack/advpack.c | 9 +++++----
dlls/advpack/files.c | 16 ++++++++++++++++
2 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/dlls/advpack/advpack.c b/dlls/advpack/advpack.c
index 154f234..4f37fad 100644
--- a/dlls/advpack/advpack.c
+++ b/dlls/advpack/advpack.c
@@ -710,6 +710,7 @@ HRESULT WINAPI TranslateInfStringW(LPCWS
DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved)
{
HINF hInf;
+ HRESULT hret = S_OK;
TRACE("(%s, %s, %s, %s, %p, %d, %p, %p)\n",
debugstr_w(pszInfFilename), debugstr_w(pszInstallSection),
@@ -730,13 +731,13 @@ HRESULT WINAPI TranslateInfStringW(LPCWS
pszBuffer, dwBufferSize, pdwRequiredSize))
{
if (dwBufferSize < *pdwRequiredSize)
- return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
-
- return SPAPI_E_LINE_NOT_FOUND;
+ hret = HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
+ else
+ hret = SPAPI_E_LINE_NOT_FOUND;
}
SetupCloseInfFile(hInf);
- return S_OK;
+ return hret;
}
/***********************************************************************
diff --git a/dlls/advpack/files.c b/dlls/advpack/files.c
index de39bba..df7b06d 100644
--- a/dlls/advpack/files.c
+++ b/dlls/advpack/files.c
@@ -573,7 +573,10 @@ static LPSTR convert_file_list(LPCSTR Fi
/* empty list */
if (!lstrlenA(szConvertedList))
+ {
+ HeapFree(GetProcessHeap(), 0, szConvertedList);
return NULL;
+ }
*dwNumFiles = 1;
@@ -744,6 +747,19 @@ HRESULT WINAPI ExtractFilesA(LPCSTR CabN
extractDest.flags |= EXTRACT_EXTRACTFILES;
res = pExtract(&extractDest, CabName);
+ if (extractDest.filelist)
+ {
+ struct ExtractFileList* curr = extractDest.filelist;
+ struct ExtractFileList* next;
+
+ while (curr)
+ {
+ next = curr->next;
+ free_file_node(curr);
+ curr = next;
+ }
+ }
+
done:
FreeLibrary(hCabinet);
HeapFree(GetProcessHeap(), 0, szConvertedList);
More information about the wine-cvs
mailing list