From 5cccc4c40c8e956ee4f6dff7cf5437de4d8c27a5 Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Tue, 10 Oct 2017 13:23:21 +0200 Subject: [PATCH] Don't try to export when we don't have filters and fix mem leak when we cancel --- src/filter/kmfilterdialog.cpp | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/filter/kmfilterdialog.cpp b/src/filter/kmfilterdialog.cpp index 3c6cb48..b60f215 100644 --- a/src/filter/kmfilterdialog.cpp +++ b/src/filter/kmfilterdialog.cpp @@ -784,19 +784,26 @@ void KMFilterDialog::slotExportAsSieveScript() KMessageBox::information(this, i18n("We cannot convert all KMail filters to sieve scripts but we can try :)"), i18n("Convert KMail filters to sieve scripts")); bool wasCanceled = false; const QList filters = mFilterList->filtersForSaving(false, wasCanceled); - QPointer dlg = new FilterSelectionDialog(this); - dlg->setFilters(filters); - if (dlg->exec() == QDialog::Accepted) { - QList lst = dlg->selectedFilters(); - if (!lst.isEmpty()) { - FilterConvertToSieve convert(lst); - convert.convert(); - qDeleteAll(lst); - } else { - KMessageBox::information(this, i18n("No filters selected."), i18n("Convert KMail filters to sieve scripts")); + if (!filters.isEmpty()) { + return; + } + if (!wasCanceled) { + QPointer dlg = new FilterSelectionDialog(this); + dlg->setFilters(filters); + if (dlg->exec() == QDialog::Accepted) { + QList lst = dlg->selectedFilters(); + if (!lst.isEmpty()) { + FilterConvertToSieve convert(lst); + convert.convert(); + qDeleteAll(lst); + } else { + KMessageBox::information(this, i18n("No filters selected."), i18n("Convert KMail filters to sieve scripts")); + } } + delete dlg; + } else { + qDeleteAll(filters); } - delete dlg; } void KMFilterDialog::slotHelp()