diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2022-08-15 22:48:42 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2022-09-16 07:13:24 -0700 |
commit | c1ca5c3cb146dc26fabbe1f06bea53f521d384e2 (patch) | |
tree | 449ca52ac902e42819f6c41f7b4de3f143b63f80 /src/webchannel/qmetaobjectpublisher.cpp | |
parent | b9b6011559001ad273c7ce100f2ca25a9909e985 (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.cpp | 5 |
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(); |