msi: Avoid a crash in ControlEvent_SetTargetPath.
Hans Leidekker
hans at codeweavers.com
Tue Aug 2 02:24:05 CDT 2011
Fixes http://bugs.winehq.org/show_bug.cgi?id=27957
---
dlls/msi/events.c | 15 ++++++++-------
1 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/dlls/msi/events.c b/dlls/msi/events.c
index 3047d1d..2c0431d 100644
--- a/dlls/msi/events.c
+++ b/dlls/msi/events.c
@@ -215,18 +215,19 @@ static UINT ControlEvent_AddSource( MSIPACKAGE *package, LPCWSTR argument, msi_d
static UINT ControlEvent_SetTargetPath(MSIPACKAGE* package, LPCWSTR argument,
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 );
MSIRECORD *rec = MSI_CreateRecord( 1 );
- UINT r;
-
- static const WCHAR szSelectionPath[] = {'S','e','l','e','c','t','i','o','n','P','a','t','h',0};
+ UINT r = ERROR_SUCCESS;
MSI_RecordSetStringW( rec, 1, path );
ControlEvent_FireSubscribedEvent( package, szSelectionPath, rec );
-
- /* failure to set the path halts the executing of control events */
- r = MSI_SetTargetPathW(package, argument, path);
- msi_free(path);
+ if (path)
+ {
+ /* failure to set the path halts the executing of control events */
+ r = MSI_SetTargetPathW(package, argument, path);
+ msi_free(path);
+ }
msi_free(&rec->hdr);
return r;
}
--
1.7.4.1
More information about the wine-patches
mailing list