diff options
Diffstat (limited to 'src/qml/jsruntime/qv4jscall_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4jscall_p.h | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/qml/jsruntime/qv4jscall_p.h b/src/qml/jsruntime/qv4jscall_p.h index 3f0c8ee06d..c6d320ac20 100644 --- a/src/qml/jsruntime/qv4jscall_p.h +++ b/src/qml/jsruntime/qv4jscall_p.h @@ -206,7 +206,7 @@ ReturnedValue convertAndCall( } template<typename Callable> -void convertAndCall(ExecutionEngine *engine, const Value *thisObject, +bool convertAndCall(ExecutionEngine *engine, const Value *thisObject, void **a, const QMetaType *types, int argc, Callable call) { Scope scope(engine); @@ -215,13 +215,10 @@ void convertAndCall(ExecutionEngine *engine, const Value *thisObject, for (int ii = 0; ii < argc; ++ii) jsCallData.args[ii] = engine->metaTypeToJS(types[ii + 1], a[ii + 1]); - void *result = a[0]; - if (!result) { - call(thisObject, jsCallData.args, argc); - return; - } - ScopedValue jsResult(scope, call(thisObject, jsCallData.args, argc)); + void *result = a[0]; + if (!result) + return !jsResult->isUndefined(); const QMetaType resultType = types[0]; if (scope.hasException()) { @@ -237,6 +234,7 @@ void convertAndCall(ExecutionEngine *engine, const Value *thisObject, scope.engine->metaTypeFromJS(jsResult, resultType, result); } } + return !jsResult->isUndefined(); } } |