From 2081639970dd808298b10283192eb86dfb8bf0b0 Mon Sep 17 00:00:00 2001 From: rivten Date: Wed, 21 Oct 2020 16:31:57 +0200 Subject: [PATCH] fix infinite loop when card file save fails, instead stop the execution just like the other errors in the call (#4143) --- oracle/src/oraclewizard.cpp | 40 ++++++++++++++++-------------------- oracle/src/pagetemplates.cpp | 40 ++++++++++++++++-------------------- 2 files changed, 36 insertions(+), 44 deletions(-) diff --git a/oracle/src/oraclewizard.cpp b/oracle/src/oraclewizard.cpp index f824bbf3..675c6f58 100644 --- a/oracle/src/oraclewizard.cpp +++ b/oracle/src/oraclewizard.cpp @@ -607,35 +607,31 @@ void SaveSetsPage::updateTotalProgress(int cardsImported, int /* setIndex */, co bool SaveSetsPage::validatePage() { - bool ok = false; QString defaultPath = SettingsCache::instance().getCardDatabasePath(); QString windowName = tr("Save card database"); QString fileType = tr("XML; card database (*.xml)"); - do { - QString fileName; - if (defaultPathCheckBox->isChecked()) { - fileName = QFileDialog::getSaveFileName(this, windowName, defaultPath, fileType); - } else { - fileName = defaultPath; - } + QString fileName; + if (defaultPathCheckBox->isChecked()) { + fileName = QFileDialog::getSaveFileName(this, windowName, defaultPath, fileType); + } else { + fileName = defaultPath; + } - if (fileName.isEmpty()) { - return false; - } + if (fileName.isEmpty()) { + return false; + } - QFileInfo fi(fileName); - QDir fileDir(fi.path()); - if (!fileDir.exists() && !fileDir.mkpath(fileDir.absolutePath())) { - return false; - } + QFileInfo fi(fileName); + QDir fileDir(fi.path()); + if (!fileDir.exists() && !fileDir.mkpath(fileDir.absolutePath())) { + return false; + } - if (wizard()->importer->saveToFile(fileName, wizard()->getCardSourceUrl(), wizard()->getCardSourceVersion())) { - ok = true; - } else { - QMessageBox::critical(this, tr("Error"), tr("The file could not be saved to %1").arg(fileName)); - } - } while (!ok); + if (!wizard()->importer->saveToFile(fileName, wizard()->getCardSourceUrl(), wizard()->getCardSourceVersion())) { + QMessageBox::critical(this, tr("Error"), tr("The file could not be saved to %1").arg(fileName)); + return false; + } return true; } diff --git a/oracle/src/pagetemplates.cpp b/oracle/src/pagetemplates.cpp index 609c0b6b..b7d3fa65 100644 --- a/oracle/src/pagetemplates.cpp +++ b/oracle/src/pagetemplates.cpp @@ -144,35 +144,31 @@ void SimpleDownloadFilePage::actDownloadFinished() bool SimpleDownloadFilePage::saveToFile() { - bool ok = false; QString defaultPath = getDefaultSavePath(); QString windowName = getWindowTitle(); QString fileType = getFileType(); - do { - QString fileName; - if (defaultPathCheckBox->isChecked()) { - fileName = QFileDialog::getSaveFileName(this, windowName, defaultPath, fileType); - } else { - fileName = defaultPath; - } + QString fileName; + if (defaultPathCheckBox->isChecked()) { + fileName = QFileDialog::getSaveFileName(this, windowName, defaultPath, fileType); + } else { + fileName = defaultPath; + } - if (fileName.isEmpty()) { - return false; - } + if (fileName.isEmpty()) { + return false; + } - QFileInfo fi(fileName); - QDir fileDir(fi.path()); - if (!fileDir.exists() && !fileDir.mkpath(fileDir.absolutePath())) { - return false; - } + QFileInfo fi(fileName); + QDir fileDir(fi.path()); + if (!fileDir.exists() && !fileDir.mkpath(fileDir.absolutePath())) { + return false; + } - if (internalSaveToFile(fileName)) { - ok = true; - } else { - QMessageBox::critical(this, tr("Error"), tr("The file could not be saved to %1").arg(fileName)); - } - } while (!ok); + if (!internalSaveToFile(fileName)) { + QMessageBox::critical(this, tr("Error"), tr("The file could not be saved to %1").arg(fileName)); + return false; + } // clean saved downloadData downloadData = QByteArray();