msi: Avoid a crash in ControlEvent_SetTargetPath.
This commit is contained in:
parent
cfe4c56624
commit
cf4aec0cbd
|
@ -215,18 +215,19 @@ static UINT ControlEvent_AddSource( MSIPACKAGE *package, LPCWSTR argument, msi_d
|
||||||
static UINT ControlEvent_SetTargetPath(MSIPACKAGE* package, LPCWSTR argument,
|
static UINT ControlEvent_SetTargetPath(MSIPACKAGE* package, LPCWSTR argument,
|
||||||
msi_dialog* dialog)
|
msi_dialog* dialog)
|
||||||
{
|
{
|
||||||
|
static const WCHAR szSelectionPath[] = {'S','e','l','e','c','t','i','o','n','P','a','t','h',0};
|
||||||
LPWSTR path = msi_dup_property( package->db, argument );
|
LPWSTR path = msi_dup_property( package->db, argument );
|
||||||
MSIRECORD *rec = MSI_CreateRecord( 1 );
|
MSIRECORD *rec = MSI_CreateRecord( 1 );
|
||||||
UINT r;
|
UINT r = ERROR_SUCCESS;
|
||||||
|
|
||||||
static const WCHAR szSelectionPath[] = {'S','e','l','e','c','t','i','o','n','P','a','t','h',0};
|
|
||||||
|
|
||||||
MSI_RecordSetStringW( rec, 1, path );
|
MSI_RecordSetStringW( rec, 1, path );
|
||||||
ControlEvent_FireSubscribedEvent( package, szSelectionPath, rec );
|
ControlEvent_FireSubscribedEvent( package, szSelectionPath, rec );
|
||||||
|
if (path)
|
||||||
|
{
|
||||||
/* failure to set the path halts the executing of control events */
|
/* failure to set the path halts the executing of control events */
|
||||||
r = MSI_SetTargetPathW(package, argument, path);
|
r = MSI_SetTargetPathW(package, argument, path);
|
||||||
msi_free(path);
|
msi_free(path);
|
||||||
|
}
|
||||||
msi_free(&rec->hdr);
|
msi_free(&rec->hdr);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue