diff options
author | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2015-08-25 16:10:22 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@theqtcompany.com> | 2015-08-25 14:15:04 +0000 |
commit | 6bf4836f381ece4156e539d8bfe911ca7a79d7a3 (patch) | |
tree | 82e39ff3bce73deb19f600bd20867d916260dc78 /src | |
parent | f37572a06f4990680d38a288eb90994cf531946f (diff) | |
download | qbs-6bf4836f381ece4156e539d8bfe911ca7a79d7a3.tar.gz |
Don't throw exceptions from EvaluatorScriptClass.
Task-number: QBS-863
Change-Id: I4fcd08fcd8c055bb12afe28a344f00f3b2cfe9c1
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/corelib/language/evaluatorscriptclass.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/lib/corelib/language/evaluatorscriptclass.cpp b/src/lib/corelib/language/evaluatorscriptclass.cpp index e0dd5a525..ab3928f7e 100644 --- a/src/lib/corelib/language/evaluatorscriptclass.cpp +++ b/src/lib/corelib/language/evaluatorscriptclass.cpp @@ -373,7 +373,11 @@ void EvaluatorScriptClass::collectValuesFromNextChain(const EvaluationData *data for (ValuePtr next = value; next; next = next->next()) { QScriptValue v = data->evaluator->property(next->definingItem(), propertyName); - data->evaluator->handleEvaluationError(next->definingItem(), propertyName, v); + ScriptEngine * const se = static_cast<ScriptEngine *>(engine()); + if (se->hasErrorOrException(v)) { + *result = se->lastErrorValue(v); + return; + } if (v.isUndefined()) continue; lst << v; @@ -384,10 +388,7 @@ void EvaluatorScriptClass::collectValuesFromNextChain(const EvaluationData *data quint32 k = 0; for (int i = 0; i < lst.count(); ++i) { const QScriptValue &v = lst.at(i); - if (v.isError()) { - *result = v; - return; - } + QBS_ASSERT(!v.isError(), continue); if (v.isArray()) { const quint32 vlen = v.property(QStringLiteral("length")).toInt32(); for (quint32 j = 0; j < vlen; ++j) |