diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp
index 2fcac8fcca3ee9c5d39e808f16900a7a7a50b5c6..d11819a5ca068b752fb3302da4c7fe4ce3af0c0a 100644
--- a/src/shared/proparser/profileevaluator.cpp
+++ b/src/shared/proparser/profileevaluator.cpp
@@ -284,6 +284,8 @@ public:
 
     QList<ProStringList> prepareFunctionArgs(const ProString &arguments);
     ProStringList evaluateFunction(const FunctionDef &func, const QList<ProStringList> &argumentsList, bool *ok);
+    VisitReturn evaluateBoolFunction(const FunctionDef &func, const QList<ProStringList> &argumentsList,
+                                     const ProString &function);
 
     QStringList qmakeMkspecPaths() const;
     QStringList qmakeFeaturePaths() const;
@@ -2307,6 +2309,32 @@ ProStringList ProFileEvaluator::Private::evaluateFunction(
     return ProStringList();
 }
 
+ProFileEvaluator::Private::VisitReturn ProFileEvaluator::Private::evaluateBoolFunction(
+        const FunctionDef &func, const QList<ProStringList> &argumentsList,
+        const ProString &function)
+{
+    bool ok;
+    ProStringList ret = evaluateFunction(func, argumentsList, &ok);
+    if (ok) {
+        if (ret.isEmpty())
+            return ReturnTrue;
+        if (ret.at(0) != statics.strfalse) {
+            if (ret.at(0) == statics.strtrue)
+                return ReturnTrue;
+            int val = ret.at(0).toQString(m_tmp1).toInt(&ok);
+            if (ok) {
+                if (val)
+                    return ReturnTrue;
+            } else {
+                logMessage(format("Unexpected return value from test '%1': %2")
+                              .arg(function.toQString(m_tmp1))
+                              .arg(ret.join(QLatin1String(" :: "))));
+            }
+        }
+    }
+    return ReturnFalse;
+}
+
 ProStringList ProFileEvaluator::Private::evaluateExpandFunction(
         const ProString &func, const ProString &arguments)
 {
@@ -2701,33 +2729,8 @@ ProFileEvaluator::Private::VisitReturn ProFileEvaluator::Private::evaluateCondit
 {
     QHash<ProString, FunctionDef>::ConstIterator it =
             m_functionDefs.testFunctions.constFind(function);
-    if (it != m_functionDefs.testFunctions.constEnd()) {
-        bool ok;
-        ProStringList ret = evaluateFunction(*it, prepareFunctionArgs(arguments), &ok);
-        if (ok) {
-            if (ret.isEmpty()) {
-                return ReturnTrue;
-            } else {
-                if (ret.at(0) != statics.strfalse) {
-                    if (ret.at(0) == statics.strtrue) {
-                        return ReturnTrue;
-                    } else {
-                        bool ok;
-                        int val = ret.at(0).toQString(m_tmp1).toInt(&ok);
-                        if (ok) {
-                            if (val)
-                                return ReturnTrue;
-                        } else {
-                            logMessage(format("Unexpected return value from test '%1': %2")
-                                          .arg(function.toQString(m_tmp1))
-                                          .arg(ret.join(QLatin1String(" :: "))));
-                        }
-                    }
-                }
-            }
-        }
-        return ReturnFalse;
-    }
+    if (it != m_functionDefs.testFunctions.constEnd())
+        return evaluateBoolFunction(*it, prepareFunctionArgs(arguments), function);
 
     //why don't the builtin functions just use args_list? --Sam
     int pos = 0;