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