diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c index 4417d4be3bb..4ab25f95852 100644 --- a/dlls/msi/dialog.c +++ b/dlls/msi/dialog.c @@ -2268,7 +2268,10 @@ static UINT msi_dialog_list_box( msi_dialog *dialog, MSIRECORD *rec ) control = msi_dialog_add_control( dialog, rec, WC_LISTBOXW, style ); if (!control) + { + msi_free(info); return ERROR_FUNCTION_FAILED; + } control->handler = msi_dialog_listbox_handler; diff --git a/dlls/msi/source.c b/dlls/msi/source.c index 68f94b549cc..fcdd35d881c 100644 --- a/dlls/msi/source.c +++ b/dlls/msi/source.c @@ -605,7 +605,10 @@ static UINT fill_source_list(struct list *sourcelist, HKEY sourcekey, DWORD *cou entry->path = msi_alloc(val_size); if (!entry->path) + { + msi_free(entry); goto error; + } lstrcpyW(entry->szIndex, name); entry->index = atoiW(name); @@ -614,7 +617,11 @@ static UINT fill_source_list(struct list *sourcelist, HKEY sourcekey, DWORD *cou r = RegEnumValueW(sourcekey, index, name, &size, NULL, NULL, (LPBYTE)entry->path, &val_size); if (r != ERROR_SUCCESS) + { + msi_free(entry->path); + msi_free(entry); goto error; + } index = ++(*count); add_source_to_list(sourcelist, entry);