Currently MsiSummaryInfoSetProperty tests don't have a chance to execute under Wine because the tests crash earlier, and the crashes are hidden by a custom action exception handler. This patch simplifies the next one.
Signed-off-by: Dmitry Timoshkov dmitry@baikal.ru --- dlls/msi/suminfo.c | 44 ++++++++++++++++++++------------------------ 1 file changed, 20 insertions(+), 24 deletions(-)
diff --git a/dlls/msi/suminfo.c b/dlls/msi/suminfo.c index 37c49d72e2..af3458a0a8 100644 --- a/dlls/msi/suminfo.c +++ b/dlls/msi/suminfo.c @@ -877,26 +877,32 @@ static UINT set_prop( MSISUMMARYINFO *si, UINT uiProperty, UINT type, return ERROR_SUCCESS; }
-UINT WINAPI MsiSummaryInfoSetPropertyW( MSIHANDLE handle, UINT uiProperty, UINT uiDataType, - INT iValue, FILETIME *pftValue, LPCWSTR szValue ) +static UINT msi_set_prop( MSISUMMARYINFO *si, UINT uiProperty, UINT uiDataType, + INT iValue, FILETIME *pftValue, awcstring *str ) { - awcstring str; - MSISUMMARYINFO *si; - UINT type, ret; - - TRACE("%u, %u, %u, %d, %p, %s\n", handle, uiProperty, uiDataType, iValue, pftValue, - debugstr_w(szValue) ); - - type = get_type( uiProperty ); + UINT type = get_type( uiProperty ); if( type == VT_EMPTY || type != uiDataType ) return ERROR_DATATYPE_MISMATCH;
- if( uiDataType == VT_LPSTR && !szValue ) + if( uiDataType == VT_LPSTR && !str->str.a ) return ERROR_INVALID_PARAMETER;
if( uiDataType == VT_FILETIME && !pftValue ) return ERROR_INVALID_PARAMETER;
+ return set_prop( si, uiProperty, type, iValue, pftValue, str ); +} + +UINT WINAPI MsiSummaryInfoSetPropertyW( MSIHANDLE handle, UINT uiProperty, UINT uiDataType, + INT iValue, FILETIME *pftValue, LPCWSTR szValue ) +{ + awcstring str; + MSISUMMARYINFO *si; + UINT ret; + + TRACE("%u, %u, %u, %d, %p, %s\n", handle, uiProperty, uiDataType, iValue, pftValue, + debugstr_w(szValue) ); + if (!(si = msihandle2msiinfo( handle, MSIHANDLETYPE_SUMMARYINFO ))) { MSIHANDLE remote; @@ -913,7 +919,7 @@ UINT WINAPI MsiSummaryInfoSetPropertyW( MSIHANDLE handle, UINT uiProperty, UINT str.unicode = TRUE; str.str.w = szValue;
- ret = set_prop( si, uiProperty, type, iValue, pftValue, &str ); + ret = msi_set_prop( si, uiProperty, uiDataType, iValue, pftValue, &str ); msiobj_release( &si->hdr ); return ret; } @@ -923,21 +929,11 @@ UINT WINAPI MsiSummaryInfoSetPropertyA( MSIHANDLE handle, UINT uiProperty, UINT { awcstring str; MSISUMMARYINFO *si; - UINT type, ret; + UINT ret;
TRACE("%u, %u, %u, %d, %p, %s\n", handle, uiProperty, uiDataType, iValue, pftValue, debugstr_a(szValue) );
- type = get_type( uiProperty ); - if( type == VT_EMPTY || type != uiDataType ) - return ERROR_DATATYPE_MISMATCH; - - if( uiDataType == VT_LPSTR && !szValue ) - return ERROR_INVALID_PARAMETER; - - if( uiDataType == VT_FILETIME && !pftValue ) - return ERROR_INVALID_PARAMETER; - if (!(si = msihandle2msiinfo( handle, MSIHANDLETYPE_SUMMARYINFO ))) { MSIHANDLE remote; @@ -954,7 +950,7 @@ UINT WINAPI MsiSummaryInfoSetPropertyA( MSIHANDLE handle, UINT uiProperty, UINT str.unicode = FALSE; str.str.a = szValue;
- ret = set_prop( si, uiProperty, uiDataType, iValue, pftValue, &str ); + ret = msi_set_prop( si, uiProperty, uiDataType, iValue, pftValue, &str ); msiobj_release( &si->hdr ); return ret; }