Module: wine Branch: master Commit: ced5081eb98c3b3fe6a9a724532309d23f9ef62c URL: http://source.winehq.org/git/wine.git/?a=commit;h=ced5081eb98c3b3fe6a9a72453...
Author: James Hawkins truiken@gmail.com Date: Wed Jan 6 18:26:45 2010 -0800
advpack: Free the file list on any error.
---
dlls/advpack/files.c | 26 +++++++++++++------------- 1 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/dlls/advpack/files.c b/dlls/advpack/files.c index 679d236..f6056f2 100644 --- a/dlls/advpack/files.c +++ b/dlls/advpack/files.c @@ -648,6 +648,18 @@ static DWORD fill_file_list(SESSION *session, LPCSTR szCabName, LPCSTR szFileLis return dwNumFound; }
+static void free_file_list(SESSION* session) +{ + struct FILELIST *next, *curr = session->FileList; + + while (curr) + { + next = curr->next; + free_file_node(curr); + curr = next; + } +} + /*********************************************************************** * ExtractFilesA (ADVPACK.@) * @@ -728,20 +740,8 @@ HRESULT WINAPI ExtractFilesA(LPCSTR CabName, LPCSTR ExpandDir, DWORD Flags, session.Operation |= EXTRACT_EXTRACTFILES; res = pExtract(&session, CabName);
- if (session.FileList) - { - struct FILELIST *curr = session.FileList; - struct FILELIST *next; - - while (curr) - { - next = curr->next; - free_file_node(curr); - curr = next; - } - } - done: + free_file_list(&session); FreeLibrary(hCabinet); HeapFree(GetProcessHeap(), 0, szConvertedList);