From bcbf17a3b0b2c99b80fb9cc6e442ac9f815a267f Mon Sep 17 00:00:00 2001
From: Daniel Teske <daniel.teske@nokia.com>
Date: Thu, 12 Jan 2012 15:00:21 +0100
Subject: [PATCH] Fix crash on adding MakeStep

This time for real.

Task-number: QTCREATORBUG-6688
Change-Id: I5256e8ca2b50830d8b8b2dd0202031c27bdc6923
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
---
 src/plugins/qt4projectmanager/makestep.cpp | 17 ++++++++++++++---
 src/plugins/qt4projectmanager/makestep.h   |  1 +
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp
index 03bd454eab7..b7021c58a4e 100644
--- a/src/plugins/qt4projectmanager/makestep.cpp
+++ b/src/plugins/qt4projectmanager/makestep.cpp
@@ -238,12 +238,14 @@ bool MakeStep::init()
 
     setOutputParser(parser);
 
+    m_scriptTarget = (bc->qt4Target()->qt4Project()->rootQt4ProjectNode()->projectType() == ScriptTemplate);
+
     return AbstractProcessStep::init();
 }
 
 void MakeStep::run(QFutureInterface<bool> & fi)
 {
-    if (qt4BuildConfiguration()->qt4Target()->qt4Project()->rootQt4ProjectNode()->projectType() == ScriptTemplate) {
+    if (m_scriptTarget) {
         fi.reportResult(true);
         return;
     }
@@ -351,13 +353,22 @@ void MakeStepConfigWidget::qtVersionChanged()
 
 void MakeStepConfigWidget::updateMakeOverrideLabel()
 {
-    Qt4BuildConfiguration *qt4bc = m_makeStep->qt4BuildConfiguration();
-    m_ui->makeLabel->setText(tr("Override %1:").arg(qt4bc->makeCommand()));
+    Qt4BuildConfiguration *bc = m_makeStep->qt4BuildConfiguration();
+    if (!bc)
+        bc = qobject_cast<Qt4BuildConfiguration *>(m_makeStep->target()->activeBuildConfiguration());
+    if (bc)
+        m_ui->makeLabel->setText(tr("Override %1:").arg(bc->makeCommand()));
+    else
+        m_ui->makeLabel->setText(tr("Make:"));
 }
 
 void MakeStepConfigWidget::updateDetails()
 {
     Qt4BuildConfiguration *bc = m_makeStep->qt4BuildConfiguration();
+    if (!bc)
+        bc = qobject_cast<Qt4BuildConfiguration *>(m_makeStep->target()->activeBuildConfiguration());
+    if (!bc)
+        m_summaryText = tr("No qt4 buildconfiguration."); // Can't happen
 
     ProjectExplorer::ProcessParameters param;
     param.setMacroExpander(bc->macroExpander());
diff --git a/src/plugins/qt4projectmanager/makestep.h b/src/plugins/qt4projectmanager/makestep.h
index 7cac6229c44..0507d24b6da 100644
--- a/src/plugins/qt4projectmanager/makestep.h
+++ b/src/plugins/qt4projectmanager/makestep.h
@@ -113,6 +113,7 @@ protected:
 private:
     void ctor();
     bool m_clean;
+    bool m_scriptTarget;
     QString m_makeFileToCheck;
     QString m_userArgs;
     QString m_makeCmd;
-- 
GitLab