From fe1c4926dec9ac729979212b4419989d56a1af48 Mon Sep 17 00:00:00 2001
From: Erik Verbruggen <erik.verbruggen@nokia.com>
Date: Wed, 24 Mar 2010 14:48:40 +0100
Subject: [PATCH] Fixes for signals and complex script bindings.

---
 .../qmldesigner/core/model/texttomodelmerger.cpp     | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp
index c1d6e277b0f..99638dcfcd9 100644
--- a/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/core/model/texttomodelmerger.cpp
@@ -153,7 +153,11 @@ static inline bool isLiteralValue(UiScriptBinding *script)
     if (!script || !script->statement)
         return false;
 
-    return isLiteralValue((cast<ExpressionStatement *>(script->statement))->expression);
+    ExpressionStatement *exprStmt = cast<ExpressionStatement *>(script->statement);
+    if (exprStmt)
+        return isLiteralValue(exprStmt->expression);
+    else
+        return false;
 }
 
 static inline bool isValidPropertyForNode(const ModelNode &modelNode,
@@ -434,6 +438,12 @@ void TextToModelMerger::syncNode(ModelNode &modelNode,
                 }
             }
         } else if (UiPublicMember *property = cast<UiPublicMember *>(member)) {
+            if (property->type == UiPublicMember::Signal)
+                continue; // QML designer doesn't support this yet.
+
+            if (!property->name || !property->memberType)
+                continue; // better safe than sorry.
+
             const QString astName = property->name->asString();
             QString astValue;
             if (property->expression)
-- 
GitLab