Project Explorer: fix possible nullptr derefs and remove dead

The dead store is not harmfull, but add noise when checking for dead
stores that are due to logic errors.

Change-Id: I18084c357696311b6556c7bc60832a72b3318e92
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
Erik Verbruggen
2014-09-11 11:05:45 +02:00
parent b3bc530cd0
commit a83bf58b88
7 changed files with 44 additions and 72 deletions

View File

@@ -301,16 +301,21 @@ void BuildStepListWidget::updateAddBuildStepMenu()
// Ask the user which one to add // Ask the user which one to add
QMenu *menu = m_addButton->menu(); QMenu *menu = m_addButton->menu();
m_addBuildStepHash.clear();
menu->clear(); menu->clear();
if (!map.isEmpty()) { if (!map.isEmpty()) {
QMap<QString, QPair<Core::Id, IBuildStepFactory *> >::const_iterator it, end; QMap<QString, QPair<Core::Id, IBuildStepFactory *> >::const_iterator it, end;
end = map.constEnd(); end = map.constEnd();
for (it = map.constBegin(); it != end; ++it) { for (it = map.constBegin(); it != end; ++it) {
QAction *action = menu->addAction(it.key()); QAction *action = menu->addAction(it.key());
connect(action, SIGNAL(triggered()), IBuildStepFactory *factory = it.value().second;
this, SLOT(triggerAddBuildStep())); Core::Id id = it.value().first;
m_addBuildStepHash.insert(action, it.value());
connect(action, &QAction::triggered, [id, factory, this]() {
BuildStep *newStep = factory->create(m_buildStepList, id);
QTC_ASSERT(newStep, return);
int pos = m_buildStepList->count();
m_buildStepList->insertStep(pos, newStep);
});
} }
} }
} }
@@ -341,17 +346,6 @@ void BuildStepListWidget::addBuildStepWidget(int pos, BuildStep *step)
m_removeMapper, SLOT(map())); m_removeMapper, SLOT(map()));
} }
void BuildStepListWidget::triggerAddBuildStep()
{
if (QAction *action = qobject_cast<QAction *>(sender())) {
QPair<Core::Id, IBuildStepFactory *> pair = m_addBuildStepHash.value(action);
BuildStep *newStep = pair.second->create(m_buildStepList, pair.first);
QTC_ASSERT(newStep, return);
int pos = m_buildStepList->count();
m_buildStepList->insertStep(pos, newStep);
}
}
void BuildStepListWidget::addBuildStep(int pos) void BuildStepListWidget::addBuildStep(int pos)
{ {
BuildStep *newStep = m_buildStepList->at(pos); BuildStep *newStep = m_buildStepList->at(pos);

View File

@@ -109,7 +109,6 @@ public:
private slots: private slots:
void updateAddBuildStepMenu(); void updateAddBuildStepMenu();
void triggerAddBuildStep();
void addBuildStep(int pos); void addBuildStep(int pos);
void updateSummary(); void updateSummary();
void updateAdditionalSummary(); void updateAdditionalSummary();
@@ -127,7 +126,6 @@ private:
void addBuildStepWidget(int pos, BuildStep *step); void addBuildStepWidget(int pos, BuildStep *step);
BuildStepList *m_buildStepList; BuildStepList *m_buildStepList;
QHash<QAction *, QPair<Core::Id, ProjectExplorer::IBuildStepFactory *> > m_addBuildStepHash;
QList<Internal::BuildStepsWidgetData *> m_buildStepsData; QList<Internal::BuildStepsWidgetData *> m_buildStepsData;

View File

@@ -848,19 +848,19 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
// build without dependencies action // build without dependencies action
d->m_buildProjectOnlyAction = new QAction(tr("Build Without Dependencies"), this); d->m_buildProjectOnlyAction = new QAction(tr("Build Without Dependencies"), this);
cmd = ActionManager::registerAction(d->m_buildProjectOnlyAction, Constants::BUILDPROJECTONLY, globalcontext); ActionManager::registerAction(d->m_buildProjectOnlyAction, Constants::BUILDPROJECTONLY, globalcontext);
// rebuild without dependencies action // rebuild without dependencies action
d->m_rebuildProjectOnlyAction = new QAction(tr("Rebuild Without Dependencies"), this); d->m_rebuildProjectOnlyAction = new QAction(tr("Rebuild Without Dependencies"), this);
cmd = ActionManager::registerAction(d->m_rebuildProjectOnlyAction, Constants::REBUILDPROJECTONLY, globalcontext); ActionManager::registerAction(d->m_rebuildProjectOnlyAction, Constants::REBUILDPROJECTONLY, globalcontext);
// deploy without dependencies action // deploy without dependencies action
d->m_deployProjectOnlyAction = new QAction(tr("Deploy Without Dependencies"), this); d->m_deployProjectOnlyAction = new QAction(tr("Deploy Without Dependencies"), this);
cmd = ActionManager::registerAction(d->m_deployProjectOnlyAction, Constants::DEPLOYPROJECTONLY, globalcontext); ActionManager::registerAction(d->m_deployProjectOnlyAction, Constants::DEPLOYPROJECTONLY, globalcontext);
// clean without dependencies action // clean without dependencies action
d->m_cleanProjectOnlyAction = new QAction(tr("Clean Without Dependencies"), this); d->m_cleanProjectOnlyAction = new QAction(tr("Clean Without Dependencies"), this);
cmd = ActionManager::registerAction(d->m_cleanProjectOnlyAction, Constants::CLEANPROJECTONLY, globalcontext); ActionManager::registerAction(d->m_cleanProjectOnlyAction, Constants::CLEANPROJECTONLY, globalcontext);
// deploy action (context menu) // deploy action (context menu)
d->m_deployActionContextMenu = new QAction(tr("Deploy"), this); d->m_deployActionContextMenu = new QAction(tr("Deploy"), this);

View File

@@ -250,14 +250,15 @@ void RunSettingsWidget::aboutToShowAddMenu()
QList<Core::Id> ids = factory->availableCreationIds(m_target); QList<Core::Id> ids = factory->availableCreationIds(m_target);
foreach (Core::Id id, ids) { foreach (Core::Id id, ids) {
QAction *action = new QAction(factory->displayNameForId(id), m_addRunMenu); QAction *action = new QAction(factory->displayNameForId(id), m_addRunMenu);
FactoryAndId fai; connect(action, &QAction::triggered, [factory, id, this]() {
fai.factory = factory; RunConfiguration *newRC = factory->create(m_target, id);
fai.id = id; if (!newRC)
QVariant v; return;
v.setValue(fai); QTC_CHECK(newRC->id() == id);
action->setData(v); m_target->addRunConfiguration(newRC);
connect(action, SIGNAL(triggered()), m_target->setActiveRunConfiguration(newRC);
this, SLOT(addRunConfiguration())); m_removeRunToolButton->setEnabled(m_target->runConfigurations().size() > 1);
});
menuActions.append(action); menuActions.append(action);
} }
} }
@@ -269,21 +270,6 @@ void RunSettingsWidget::aboutToShowAddMenu()
m_addRunMenu->addAction(action); m_addRunMenu->addAction(action);
} }
void RunSettingsWidget::addRunConfiguration()
{
QAction *act = qobject_cast<QAction *>(sender());
if (!act)
return;
FactoryAndId fai = act->data().value<FactoryAndId>();
RunConfiguration *newRC = fai.factory->create(m_target, fai.id);
if (!newRC)
return;
QTC_CHECK(newRC->id() == fai.id);
m_target->addRunConfiguration(newRC);
m_target->setActiveRunConfiguration(newRC);
m_removeRunToolButton->setEnabled(m_target->runConfigurations().size() > 1);
}
void RunSettingsWidget::cloneRunConfiguration() void RunSettingsWidget::cloneRunConfiguration()
{ {
RunConfiguration* activeRunConfiguration = m_target->activeRunConfiguration(); RunConfiguration* activeRunConfiguration = m_target->activeRunConfiguration();
@@ -397,27 +383,21 @@ void RunSettingsWidget::aboutToShowDeployMenu()
action->setData(QVariant::fromValue(data)); action->setData(QVariant::fromValue(data));
connect(action, SIGNAL(triggered()), connect(action, SIGNAL(triggered()),
this, SLOT(addDeployConfiguration())); this, SLOT(addDeployConfiguration()));
connect(action, &QAction::triggered, [factory, id, this]() {
if (!factory->canCreate(m_target, id))
return;
DeployConfiguration *newDc = factory->create(m_target, id);
if (!newDc)
return;
QTC_CHECK(!newDc || newDc->id() == id);
m_target->addDeployConfiguration(newDc);
m_target->setActiveDeployConfiguration(newDc);
m_removeDeployToolButton->setEnabled(m_target->deployConfigurations().size() > 1);
});
} }
} }
} }
void RunSettingsWidget::addDeployConfiguration()
{
QAction *act = qobject_cast<QAction *>(sender());
if (!act)
return;
DeployFactoryAndId data = act->data().value<DeployFactoryAndId>();
if (!data.factory->canCreate(m_target, data.id))
return;
DeployConfiguration *newDc = data.factory->create(m_target, data.id);
if (!newDc)
return;
QTC_CHECK(!newDc || newDc->id() == data.id);
m_target->addDeployConfiguration(newDc);
m_target->setActiveDeployConfiguration(newDc);
m_removeDeployToolButton->setEnabled(m_target->deployConfigurations().size() > 1);
}
void RunSettingsWidget::removeDeployConfiguration() void RunSettingsWidget::removeDeployConfiguration()
{ {
DeployConfiguration *dc = m_target->activeDeployConfiguration(); DeployConfiguration *dc = m_target->activeDeployConfiguration();

View File

@@ -67,14 +67,12 @@ public:
private slots: private slots:
void currentRunConfigurationChanged(int index); void currentRunConfigurationChanged(int index);
void aboutToShowAddMenu(); void aboutToShowAddMenu();
void addRunConfiguration();
void cloneRunConfiguration(); void cloneRunConfiguration();
void removeRunConfiguration(); void removeRunConfiguration();
void activeRunConfigurationChanged(); void activeRunConfigurationChanged();
void renameRunConfiguration(); void renameRunConfiguration();
void currentDeployConfigurationChanged(int index); void currentDeployConfigurationChanged(int index);
void aboutToShowDeployMenu(); void aboutToShowDeployMenu();
void addDeployConfiguration();
void removeDeployConfiguration(); void removeDeployConfiguration();
void activeDeployConfigurationChanged(); void activeDeployConfigurationChanged();
void renameDeployConfiguration(); void renameDeployConfiguration();

View File

@@ -165,14 +165,16 @@ LibraryWizardDialog::LibraryWizardDialog(const QString &templateName,
Utils::WizardProgressItem *filesItem = wizardProgress()->item(m_filesPageId); Utils::WizardProgressItem *filesItem = wizardProgress()->item(m_filesPageId);
filesItem->setTitle(tr("Details")); filesItem->setTitle(tr("Details"));
if (m_targetPageId != -1) { if (targetItem) {
targetItem->setNextItems(QList<Utils::WizardProgressItem *>() if (m_targetPageId != -1) {
<< modulesItem << filesItem); targetItem->setNextItems(QList<Utils::WizardProgressItem *>()
targetItem->setNextShownItem(0); << modulesItem << filesItem);
} else { targetItem->setNextShownItem(0);
introItem->setNextItems(QList<Utils::WizardProgressItem *>() } else {
<< modulesItem << filesItem); introItem->setNextItems(QList<Utils::WizardProgressItem *>()
introItem->setNextShownItem(0); << modulesItem << filesItem);
introItem->setNextShownItem(0);
}
} }
connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(slotCurrentIdChanged(int))); connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(slotCurrentIdChanged(int)));

View File

@@ -212,7 +212,7 @@ void ShortCutManager::updateActions(Core::IEditor* currentEditor)
&& document->isModified()); && document->isModified());
QString quotedName; QString quotedName;
if (currentEditor) if (currentEditor && document)
quotedName = '"' + document->displayName() + '"'; quotedName = '"' + document->displayName() + '"';
m_saveAsAction.setText(tr("Save %1 As...").arg(quotedName)); m_saveAsAction.setText(tr("Save %1 As...").arg(quotedName));