diff --git a/App/main.cpp b/App/main.cpp index e9fcf9b959faef10283bba009669c87268eb17c1..38683caf7589cdcca03f1ed07dd04ca50d923eb1 100644 --- a/App/main.cpp +++ b/App/main.cpp @@ -71,7 +71,7 @@ int main(int argc, char* argv[]) QString("Sorry, you encountered a fatal bug.\n" "The application will terminate.\n" "Please note the following and inform the maintainers.\n\n") - + ex.what() + "\n", + + ex.what() + "\n", QMessageBox::Ok, nullptr); msgbox.exec(); return 1; diff --git a/GUI/Model/Data/DataItem.cpp b/GUI/Model/Data/DataItem.cpp index 9c77c97636cca313772b538174a9adc391dbddea..5ec6f6ff8fb3f55b5fa6c1a9fd7d81556d510804 100644 --- a/GUI/Model/Data/DataItem.cpp +++ b/GUI/Model/Data/DataItem.cpp @@ -135,9 +135,18 @@ void DataItem::saveDatafield(const QString& projectDir) const }; if (m_saveInBackground) { - auto* saveThread = QThread::create(saveLambda); - connect(saveThread, &QThread::finished, saveThread, &QObject::deleteLater); - saveThread->start(); + std::string errorMessage; + auto* saveThread = new std::thread([&errorMessage, saveLambda]() { + try { + saveLambda(); + } catch (const std::exception& ex) { + errorMessage = ex.what(); + } + }); + saveThread->join(); + + if (!errorMessage.empty()) + throw std::runtime_error(errorMessage); } else saveLambda();