From 206c190e7ff3e7dfd59341fa99207c0d1bff0dd7 Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Wed, 9 Jun 2010 14:24:23 +0200
Subject: [PATCH] QmlJS: Make qmldump not dump open/dynamic meta objects.

They would need special treatment, like the Qml extended objects. The
issue is they lead to two meta objects with the same classname and the
dumper can't handle that.
---
 src/tools/qml/qmldump/main.cpp | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/tools/qml/qmldump/main.cpp b/src/tools/qml/qmldump/main.cpp
index 65b7a9dd2ff..5eec77a6ad0 100644
--- a/src/tools/qml/qmldump/main.cpp
+++ b/src/tools/qml/qmldump/main.cpp
@@ -9,7 +9,10 @@
 #include <QDebug>
 #include <iostream>
 #include <QtDeclarative>
+#include <QtCore/private/qobject_p.h>
+#include <QtCore/private/qmetaobject_p.h>
 #include <QtDeclarative/private/qdeclarativemetatype_p.h>
+#include <QtDeclarative/private/qdeclarativeopenmetaobject_p.h>
 #include <QtDeclarative/QDeclarativeView>
 
 static QHash<QByteArray, const QDeclarativeType *> qmlTypeByCppName;
@@ -47,7 +50,11 @@ void processMetaObject(const QMetaObject *meta, QSet<const QMetaObject *> *metas
     if (! meta || metas->contains(meta))
         return;
 
-    metas->insert(meta);
+    // dynamic meta objects break things badly
+    const QMetaObjectPrivate *mop = reinterpret_cast<const QMetaObjectPrivate *>(meta->d.data);
+    if (!(mop->flags & DynamicMetaObject))
+        metas->insert(meta);
+
     processMetaObject(meta->superClass(), metas);
 }
 
-- 
GitLab