James Hawkins : advpack: Free the file list on any error.
Alexandre Julliard
julliard at winehq.org
Thu Jan 7 13:08:35 CST 2010
Module: wine
Branch: master
Commit: ced5081eb98c3b3fe6a9a724532309d23f9ef62c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ced5081eb98c3b3fe6a9a724532309d23f9ef62c
Author: James Hawkins <truiken at 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);
More information about the wine-cvs
mailing list