diff --git a/src/tools/qml/qmldump/main.cpp b/src/tools/qml/qmldump/main.cpp index 525ccd83354..4dcdb0156c2 100644 --- a/src/tools/qml/qmldump/main.cpp +++ b/src/tools/qml/qmldump/main.cpp @@ -9,7 +9,10 @@ #include #include #include +#include +#include #include +#include #include static QHash qmlTypeByCppName; @@ -46,7 +49,11 @@ void processMetaObject(const QMetaObject *meta, QSet *metas if (! meta || metas->contains(meta)) return; - metas->insert(meta); + // dynamic meta objects break things badly + const QMetaObjectPrivate *mop = reinterpret_cast(meta->d.data); + if (!(mop->flags & DynamicMetaObject)) + metas->insert(meta); + processMetaObject(meta->superClass(), metas); }