aboutsummaryrefslogtreecommitdiffstats
path: root/src/webchannel/qmetaobjectpublisher.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2022-08-15 22:48:42 -0700
committerThiago Macieira <thiago.macieira@intel.com>2022-09-16 07:13:24 -0700
commitc1ca5c3cb146dc26fabbe1f06bea53f521d384e2 (patch)
tree449ca52ac902e42819f6c41f7b4de3f143b63f80 /src/webchannel/qmetaobjectpublisher.cpp
parentb9b6011559001ad273c7ce100f2ca25a9909e985 (diff)
QMetaObjectBuilder: pass meta types to QMetaMethodInvoker
Task-number: QTBUG-105596 Change-Id: Ic6547f8247454b47baa8fffd170bbd389cfb38c6 Reviewed-by: Arno Rehn <a.rehn@menlosystems.com>
Diffstat (limited to 'src/webchannel/qmetaobjectpublisher.cpp')
-rw-r--r--src/webchannel/qmetaobjectpublisher.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/webchannel/qmetaobjectpublisher.cpp b/src/webchannel/qmetaobjectpublisher.cpp
index d25bed0..e27d620 100644
--- a/src/webchannel/qmetaobjectpublisher.cpp
+++ b/src/webchannel/qmetaobjectpublisher.cpp
@@ -518,6 +518,7 @@ QVariant QMetaObjectPublisher::invokeMethod_helper(QObject *const object, const
QVarLengthArray<QVariant, ArgumentCount> variants;
QVarLengthArray<const char *, ArgumentCount> names(method.parameterCount() + 1);
QVarLengthArray<void *, ArgumentCount> parameters(names.size());
+ QVarLengthArray<const QtPrivate::QMetaTypeInterface *, ArgumentCount> metaTypes(names.size());
variants.reserve(names.size());
variants << QVariant();
@@ -527,11 +528,13 @@ QVariant QMetaObjectPublisher::invokeMethod_helper(QObject *const object, const
QVariant &v = variants.emplace_back(toVariant(args.at(i), mt.id()));
parameters[i + 1] = v.data();
names[i + 1] = mt.name();
+ metaTypes[i + 1] = mt.iface();
}
// now, the return type
QMetaType mt = method.returnMetaType();
names[0] = mt.name();
+ metaTypes[0] = mt.iface();
if (int id = mt.id(); id != QMetaType::Void) {
// Only init variant with return type if its not a variant itself,
// which would lead to nested variants which is not what we want.
@@ -549,7 +552,7 @@ QVariant QMetaObjectPublisher::invokeMethod_helper(QObject *const object, const
QMetaMethodInvoker::InvokeFailReason r =
QMetaMethodInvoker::invokeImpl(method, object, Qt::AutoConnection,
parameters.size(), parameters.constData(),
- names.constData());
+ names.constData(), metaTypes.constData());
if (r == QMetaMethodInvoker::InvokeFailReason::None)
return variants.first();