aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/qml/jsruntime/qv4vme_moth.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/qml/jsruntime/qv4vme_moth.cpp b/src/qml/jsruntime/qv4vme_moth.cpp
index 5bb82aeadf..55c7759716 100644
--- a/src/qml/jsruntime/qv4vme_moth.cpp
+++ b/src/qml/jsruntime/qv4vme_moth.cpp
@@ -463,8 +463,17 @@ ReturnedValue VME::exec(CppStackFrame *frame, ExecutionEngine *engine)
Scope scope(engine);
Scoped<QmlContext> qmlContext(scope, engine->qmlContext());
- QVariant resultVariant(function->aotFunction->returnType, nullptr);
- function->aotFunction->functionPtr(qmlContext->qmlContext()->asQQmlContext(), qmlContext->qmlScope(), resultVariant.data());
+ QVariant resultVariant;
+ if (function->aotFunction->returnType.id() == QMetaType::QVariant) {
+ function->aotFunction->functionPtr(
+ qmlContext->qmlContext()->asQQmlContext(), qmlContext->qmlScope(),
+ &resultVariant);
+ } else {
+ resultVariant = QVariant(function->aotFunction->returnType, nullptr);
+ function->aotFunction->functionPtr(
+ qmlContext->qmlContext()->asQQmlContext(), qmlContext->qmlScope(),
+ resultVariant.data());
+ }
result = engine->fromVariant(resultVariant);
} else {
// interpreter