From 106513223d9433bcb062e6dc6ec2c52fe7083a28 Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Fri, 11 Mar 2011 10:18:42 +0100
Subject: [PATCH] QmlJS: Fix infinite loop for objects that are attached to
 themselves.

---
 src/libs/qmljs/qmljsinterpreter.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/libs/qmljs/qmljsinterpreter.cpp b/src/libs/qmljs/qmljsinterpreter.cpp
index c9e1c528331..b3f11d2b20b 100644
--- a/src/libs/qmljs/qmljsinterpreter.cpp
+++ b/src/libs/qmljs/qmljsinterpreter.cpp
@@ -2114,9 +2114,11 @@ void CppQmlTypes::setPrototypes(QmlObjectValue *object)
     FakeMetaObject::ConstPtr fmo = object->metaObject();
 
     // resolve attached type
-    if (!fmo->attachedTypeName().isEmpty()) {
+    // don't do it if the attached type name is the object itself (happens for QDeclarativeKeysAttached)
+    if (!fmo->attachedTypeName().isEmpty()
+            && fmo->className() != fmo->attachedTypeName()) {
         QmlObjectValue *attachedObject = typeByCppName(fmo->attachedTypeName());
-        if (attachedObject)
+        if (attachedObject && attachedObject != object)
             object->setAttachedType(attachedObject);
     }
 
-- 
GitLab