Hans Leidekker : msi: Move application of substorage transforms out of msi_parse_patch_summary.
Alexandre Julliard
julliard at winehq.org
Tue Apr 13 11:24:41 CDT 2010
Module: wine
Branch: master
Commit: 33299faae48fb4c88a0fa849644030d6a574eef1
URL: http://source.winehq.org/git/wine.git/?a=commit;h=33299faae48fb4c88a0fa849644030d6a574eef1
Author: Hans Leidekker <hans at 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.
More information about the wine-cvs
mailing list