summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@theqtcompany.com>2015-08-25 16:10:22 +0200
committerChristian Kandeler <christian.kandeler@theqtcompany.com>2015-08-25 14:15:04 +0000
commit6bf4836f381ece4156e539d8bfe911ca7a79d7a3 (patch)
tree82e39ff3bce73deb19f600bd20867d916260dc78 /src
parentf37572a06f4990680d38a288eb90994cf531946f (diff)
downloadqbs-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.cpp11
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)