diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp
index 5b0bc84c34bad8bda5a906067e370cc36f329b10..c611b390cec8861798abaa39fd12daf3ff3937ba 100644
--- a/src/plugins/projectexplorer/abstractprocessstep.cpp
+++ b/src/plugins/projectexplorer/abstractprocessstep.cpp
@@ -298,6 +298,9 @@ void AbstractProcessStep::processStartupFailed()
 
 bool AbstractProcessStep::processSucceeded(int exitCode, QProcess::ExitStatus status)
 {
+    if (outputParser() && outputParser()->hasFatalErrors())
+        return false;
+
     return exitCode == 0 && status == QProcess::NormalExit;
 }
 
diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp
index 5536885662170decd47c05e616e24b86d705a2fd..02a76cdec3886abd9ef1ca6c3710b4ca20315e2c 100644
--- a/src/plugins/qt4projectmanager/makestep.cpp
+++ b/src/plugins/qt4projectmanager/makestep.cpp
@@ -298,15 +298,6 @@ void MakeStep::run(QFutureInterface<bool> & fi)
     AbstractProcessStep::run(fi);
 }
 
-bool MakeStep::processSucceeded(int exitCode, QProcess::ExitStatus status)
-{
-    // Symbian does retun 0, even on failed makes! So we check for fatal make errors here.
-    if (outputParser() && outputParser()->hasFatalErrors())
-        return false;
-
-    return AbstractProcessStep::processSucceeded(exitCode, status);
-}
-
 bool MakeStep::immutable() const
 {
     return false;
diff --git a/src/plugins/qt4projectmanager/makestep.h b/src/plugins/qt4projectmanager/makestep.h
index b09ceecbe03eb88b372b103c18590209d040c2e0..d9729cbb3ac106093a63ee96be9b26798fd86f51 100644
--- a/src/plugins/qt4projectmanager/makestep.h
+++ b/src/plugins/qt4projectmanager/makestep.h
@@ -85,7 +85,6 @@ public:
 
     virtual bool init();
     virtual void run(QFutureInterface<bool> &);
-    bool processSucceeded(int exitCode, QProcess::ExitStatus status);
 
     virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget();
     virtual bool immutable() const;