advpack: Free the file list on any error.

oldstable
James Hawkins 2010-01-06 18:26:45 -08:00 committed by Alexandre Julliard
parent 621a772d48
commit ced5081eb9
1 changed files with 13 additions and 13 deletions

View File

@ -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);