Fix error handling in MsiEvaluateCondition.
This commit is contained in:
parent
2fa0dbd595
commit
029c83d88e
|
@ -138,6 +138,11 @@ condition:
|
||||||
COND_input* cond = (COND_input*) info;
|
COND_input* cond = (COND_input*) info;
|
||||||
cond->result = $1;
|
cond->result = $1;
|
||||||
}
|
}
|
||||||
|
| /* empty */
|
||||||
|
{
|
||||||
|
COND_input* cond = (COND_input*) info;
|
||||||
|
cond->result = MSICONDITION_NONE;
|
||||||
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
expression:
|
expression:
|
||||||
|
@ -731,6 +736,7 @@ static LPWSTR COND_GetLiteral( struct cond_str *str )
|
||||||
|
|
||||||
static int COND_error(const char *str)
|
static int COND_error(const char *str)
|
||||||
{
|
{
|
||||||
|
TRACE("%s\n", str );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -739,16 +745,17 @@ MSICONDITION MSI_EvaluateConditionW( MSIPACKAGE *package, LPCWSTR szCondition )
|
||||||
COND_input cond;
|
COND_input cond;
|
||||||
MSICONDITION r;
|
MSICONDITION r;
|
||||||
|
|
||||||
|
if ( szCondition == NULL )
|
||||||
|
return MSICONDITION_NONE;
|
||||||
|
|
||||||
cond.package = package;
|
cond.package = package;
|
||||||
cond.str = szCondition;
|
cond.str = szCondition;
|
||||||
cond.n = 0;
|
cond.n = 0;
|
||||||
cond.result = -1;
|
cond.result = MSICONDITION_ERROR;
|
||||||
|
|
||||||
TRACE("Evaluating %s\n",debugstr_w(szCondition));
|
TRACE("Evaluating %s\n",debugstr_w(szCondition));
|
||||||
|
|
||||||
if ( szCondition == NULL || szCondition[0] == 0)
|
if ( !COND_parse( &cond ) )
|
||||||
r = MSICONDITION_NONE;
|
|
||||||
else if ( !COND_parse( &cond ) )
|
|
||||||
r = cond.result;
|
r = cond.result;
|
||||||
else
|
else
|
||||||
r = MSICONDITION_ERROR;
|
r = MSICONDITION_ERROR;
|
||||||
|
@ -764,7 +771,7 @@ MSICONDITION WINAPI MsiEvaluateConditionW( MSIHANDLE hInstall, LPCWSTR szConditi
|
||||||
|
|
||||||
package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE);
|
package = msihandle2msiinfo( hInstall, MSIHANDLETYPE_PACKAGE);
|
||||||
if( !package)
|
if( !package)
|
||||||
return ERROR_INVALID_HANDLE;
|
return MSICONDITION_ERROR;
|
||||||
ret = MSI_EvaluateConditionW( package, szCondition );
|
ret = MSI_EvaluateConditionW( package, szCondition );
|
||||||
msiobj_release( &package->hdr );
|
msiobj_release( &package->hdr );
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -775,16 +782,11 @@ MSICONDITION WINAPI MsiEvaluateConditionA( MSIHANDLE hInstall, LPCSTR szConditio
|
||||||
LPWSTR szwCond = NULL;
|
LPWSTR szwCond = NULL;
|
||||||
MSICONDITION r;
|
MSICONDITION r;
|
||||||
|
|
||||||
if( szCondition )
|
szwCond = strdupAtoW( szCondition );
|
||||||
{
|
if( szCondition && !szwCond )
|
||||||
UINT len = MultiByteToWideChar( CP_ACP, 0, szCondition, -1, NULL, 0 );
|
return MSICONDITION_ERROR;
|
||||||
szwCond = msi_alloc( len * sizeof (WCHAR) );
|
|
||||||
MultiByteToWideChar( CP_ACP, 0, szCondition, -1, szwCond, len );
|
|
||||||
}
|
|
||||||
|
|
||||||
r = MsiEvaluateConditionW( hInstall, szwCond );
|
r = MsiEvaluateConditionW( hInstall, szwCond );
|
||||||
|
|
||||||
msi_free( szwCond );
|
msi_free( szwCond );
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue