Commit 7929c31e authored by Dmitry Timoshkov's avatar Dmitry Timoshkov Committed by Alexandre Julliard

msi: Move parameter checks to a common helper in MsiSummaryInfoSetProperty.

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: 's avatarDmitry Timoshkov <dmitry@baikal.ru> Signed-off-by: 's avatarHans Leidekker <hans@codeweavers.com> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent 7c844af8
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment