Crash: Fix crash when removing a tool chain

Fix crash on trying to debug an application after the last
tool chain for the Qt version used was removed.

Task-number: QTCREATORBUG-4197
Reviewed-by: dt
This commit is contained in:
Tobias Hunger
2011-03-24 11:58:40 +01:00
parent 6ad7df6940
commit 3664d20507
4 changed files with 38 additions and 16 deletions

View File

@@ -456,15 +456,20 @@ void Qt4ProjectConfigWidget::toolChainChanged()
{
if (m_ignoreChange)
return;
for (int i=0; i < m_ui->toolChainComboBox->count(); ++i) {
for (int i = 0; i < m_ui->toolChainComboBox->count(); ++i) {
ProjectExplorer::ToolChain *tc =
static_cast<ProjectExplorer::ToolChain *>(m_ui->toolChainComboBox->itemData(i, Qt::UserRole).value<void *>());
if (tc == m_buildConfiguration->toolChain()) {
m_ignoreChange = true;
m_ui->toolChainComboBox->setCurrentIndex(i);
m_ignoreChange = false;
return;
}
}
m_ignoreChange = true;
m_ui->toolChainComboBox->addItem(tr("<No tool chain selected>"), qVariantFromValue(static_cast<void *>(0)));
m_ui->toolChainComboBox->setCurrentIndex(m_ui->toolChainComboBox->count() - 1);
m_ignoreChange = false;
}
void Qt4ProjectConfigWidget::updateToolChainCombo()
@@ -476,20 +481,8 @@ void Qt4ProjectConfigWidget::updateToolChainCombo()
foreach (ProjectExplorer::ToolChain *toolchain, toolchains)
m_ui->toolChainComboBox->addItem(toolchain->displayName(),
qVariantFromValue(static_cast<void *>(toolchain)));
m_ignoreChange = true;
if (!m_buildConfiguration->toolChain() || toolchains.isEmpty()) {
m_ui->toolChainComboBox->addItem(tr("<Invalid tool chain>"), qVariantFromValue(static_cast<void *>(0)));
m_ui->toolChainComboBox->setCurrentIndex(m_ui->toolChainComboBox->count() - 1);
} else if (toolchains.contains(m_buildConfiguration->toolChain())) {
m_ui->toolChainComboBox->setCurrentIndex(toolchains.indexOf(m_buildConfiguration->toolChain()));
} else { // reset to some sensible tool chain
ToolChain *tc = 0;
if (!toolchains.isEmpty())
tc = toolchains.at(0);
m_buildConfiguration->setToolChain(tc);
}
m_ignoreChange = false;
m_ui->toolChainComboBox->setEnabled(toolchains.size() > 1);
toolChainChanged();
}
void Qt4ProjectConfigWidget::toolChainSelected(int index)