From c9684054553f6dd8c4ff478653d20cd7a4adba9e Mon Sep 17 00:00:00 2001 From: Ievgenii Meshcheriakov Date: Tue, 23 May 2023 15:03:09 +0200 Subject: QDBusAbstractAdaptor: Send signals using correct interface When forwarding a signal, associate this signal with its enclosing metaobject instead of its sender's metaobject. Those two may be different if the signal is declared in a base class. Add a regression test into tst_qdbusconnection. Fixes: QTBUG-33142 Pick-to: 6.5 Change-Id: I532ab3bb6c0671a480568f46d63fceff0c82c097 Reviewed-by: Thiago Macieira Reviewed-by: Qt CI Bot --- src/dbus/qdbusabstractadaptor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/dbus/qdbusabstractadaptor.cpp') diff --git a/src/dbus/qdbusabstractadaptor.cpp b/src/dbus/qdbusabstractadaptor.cpp index 77e86ed949..9da2fd3886 100644 --- a/src/dbus/qdbusabstractadaptor.cpp +++ b/src/dbus/qdbusabstractadaptor.cpp @@ -255,8 +255,8 @@ void QDBusAdaptorConnector::relay(QObject *senderObj, int lastSignalIdx, void ** // QObject signal (destroyed(QObject *)) -- ignore return; - const QMetaObject *senderMetaObject = senderObj->metaObject(); - QMetaMethod mm = senderMetaObject->method(lastSignalIdx); + QMetaMethod mm = senderObj->metaObject()->method(lastSignalIdx); + const QMetaObject *senderMetaObject = mm.enclosingMetaObject(); QObject *realObject = senderObj; if (qobject_cast(senderObj)) -- cgit v1.2.3