Module: wine Branch: master Commit: ea2f60160c98456daf81b60119feecdc676d2bbb URL: http://source.winehq.org/git/wine.git/?a=commit;h=ea2f60160c98456daf81b60119...
Author: Eric Pouech eric.pouech@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);