McuSupport: Fix kit creation dialog crash

Use copies of messages to avoid their reference going out of scope
Fix increment current message index for when there is only one
message

Fixes: QTCREATORBUG-30360
Change-Id: I26fac50ed171aaed7d178cc8f97ace401bf49e7c
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Yasser Grimes
2024-02-28 11:55:31 +02:00
parent 5a1e5ce058
commit 124c62a5a0
3 changed files with 11 additions and 5 deletions

View File

@@ -78,12 +78,18 @@ McuKitCreationDialog::McuKitCreationDialog(const MessagesList &messages,
QPushButton *fixButton = buttonBox->addButton(Tr::tr("Fix"), QDialogButtonBox::ActionRole);
QPushButton *helpButton = buttonBox->addButton(Tr::tr("Help"), QDialogButtonBox::HelpRole);
if (messages.size() == 1) {
if (messages.empty()) {
fixButton->setVisible(false);
m_informationLabel->setText(
QCoreApplication::translate("QtC::Autotest", "No errors detected"));
}
if (messages.size() < 2) {
m_nextButton->setVisible(false);
m_previousButton->setVisible(false);
}
//display first message
if (messages.size() > 1)
if (!messages.empty())
updateMessage(1);
if (qtMCUPackage->isValidStatus())

View File

@@ -255,7 +255,7 @@ McuKitManager::UpgradeOption McuSupportOptions::askForKitUpgrades()
return McuKitManager::UpgradeOption::Ignore;
}
void McuSupportOptions::displayKitCreationMessages(const MessagesList &messages,
void McuSupportOptions::displayKitCreationMessages(const MessagesList messages,
const SettingsHandler::Ptr &settingsHandler,
McuPackagePtr qtMCUsPackage)
{
@@ -269,7 +269,7 @@ void McuSupportOptions::displayKitCreationMessages(const MessagesList &messages,
Tr::tr("Errors while creating Qt for MCUs kits"),
Utils::InfoBarEntry::GlobalSuppression::Enabled);
info.addCustomButton(Tr::tr("Details"), [=] {
info.addCustomButton(Tr::tr("Details"), [messages, &settingsHandler, qtMCUsPackage] {
auto popup = new McuKitCreationDialog(messages, settingsHandler, qtMCUsPackage);
popup->exec();
delete popup;

View File

@@ -59,7 +59,7 @@ public:
[[nodiscard]] Utils::FilePath qulDirFromSettings() const;
[[nodiscard]] Utils::FilePath qulDocsDir() const;
static McuKitManager::UpgradeOption askForKitUpgrades();
static void displayKitCreationMessages(const MessagesList &messages,
static void displayKitCreationMessages(const MessagesList messages,
const SettingsHandler::Ptr &settingsHandler,
McuPackagePtr qtMCUsPackage);