Hans Leidekker : msi: Move application of substorage transforms out of msi_parse_patch_summary.
Module: wine Branch: master Commit: 33299faae48fb4c88a0fa849644030d6a574eef1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=33299faae48fb4c88a0fa84964... Author: Hans Leidekker <hans(a)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.
participants (1)
-
Alexandre Julliard