diff --git a/src/dbus/qdbusmisc.cpp b/src/dbus/qdbusmisc.cpp index 502624cd666..719450c3dd8 100644 --- a/src/dbus/qdbusmisc.cpp +++ b/src/dbus/qdbusmisc.cpp @@ -103,7 +103,19 @@ bool qDBusInterfaceInObject(QObject *obj, const QString &interface_name) // sig must be the normalised signature for the method int qDBusParametersForMethod(const QMetaMethod &mm, QList &metaTypes, QString &errorMsg) { - return qDBusParametersForMethod(mm.parameterTypes(), metaTypes, errorMsg); + QList parameterTypes; + parameterTypes.reserve(mm.parameterCount()); + + // Not using QMetaMethod::parameterTypes() since we call QMetaType::fromName below + // where we need any typedefs resolved already. + for (int i = 0; i < mm.parameterCount(); ++i) { + QByteArray typeName = mm.parameterMetaType(i).name(); + if (typeName.isEmpty()) + typeName = mm.parameterTypeName(i); + parameterTypes.append(typeName); + } + + return qDBusParametersForMethod(parameterTypes, metaTypes, errorMsg); } #endif // QT_BOOTSTRAPPED