Module: wine Branch: master Commit: 33299faae48fb4c88a0fa849644030d6a574eef1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=33299faae48fb4c88a0fa84964...
Author: Hans Leidekker hans@codeweavers.com Date: Tue Apr 13 11:16:17 2010 +0200
msi: Move application of substorage transforms out of msi_parse_patch_summary.
---
dlls/msi/action.c | 31 +++++++++++++++++-------------- 1 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/dlls/msi/action.c b/dlls/msi/action.c index 5043426..a4af27c 100644 --- a/dlls/msi/action.c +++ b/dlls/msi/action.c @@ -491,8 +491,7 @@ done: static UINT msi_parse_patch_summary( MSIPACKAGE *package, MSIDATABASE *patch_db ) { MSISUMMARYINFO *si; - LPWSTR str, *substorage; - UINT i, r = ERROR_SUCCESS; + UINT r = ERROR_SUCCESS;
si = MSI_GetSummaryInformationW( patch_db->storage, 0 ); if (!si) @@ -519,26 +518,22 @@ static UINT msi_parse_patch_summary( MSIPACKAGE *package, MSIDATABASE *patch_db return ERROR_OUTOFMEMORY; }
- /* enumerate the substorage */ - str = msi_suminfo_dup_string( si, PID_LASTAUTHOR ); - package->patch->transforms = str; - - substorage = msi_split_string( str, ';' ); - for ( i = 0; substorage && substorage[i] && r == ERROR_SUCCESS; i++ ) - r = msi_apply_substorage_transform( package, patch_db, substorage[i] ); + package->patch->transforms = msi_suminfo_dup_string(si, PID_LASTAUTHOR); + if (!package->patch->transforms) + { + msiobj_release( &si->hdr ); + return ERROR_OUTOFMEMORY; + }
- msi_free( substorage ); msiobj_release( &si->hdr ); - - msi_set_media_source_prop(package); - return r; }
static UINT msi_apply_patch_package( MSIPACKAGE *package, LPCWSTR file ) { MSIDATABASE *patch_db = NULL; - UINT r; + LPWSTR *substorage; + UINT i, r;
TRACE("%p %s\n", package, debugstr_w( file ) );
@@ -556,6 +551,14 @@ static UINT msi_apply_patch_package( MSIPACKAGE *package, LPCWSTR file )
msi_parse_patch_summary( package, patch_db );
+ /* apply substorage transforms */ + substorage = msi_split_string( package->patch->transforms, ';' ); + for ( i = 0; substorage && substorage[i] && r == ERROR_SUCCESS; i++ ) + r = msi_apply_substorage_transform( package, patch_db, substorage[i] ); + + msi_free( substorage ); + msi_set_media_source_prop( package ); + /* * There might be a CAB file in the patch package, * so append it to the list of storage to search for streams.