From 2f5c906d18c7613d87c1e7abdd51ac4b2338224c Mon Sep 17 00:00:00 2001
From: Marco Bubke <marco.bubke@nokia.com>
Date: Mon, 26 Apr 2010 13:54:36 +0200
Subject: [PATCH] Improve NodeInstanceMetaObject workaround for NaN values

The old was wrong in the assumption that the pointer is allways a
variant.

Reviewed-by: kkoehne
---
 .../core/instances/nodeinstancemetaobject.cpp       | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/plugins/qmldesigner/core/instances/nodeinstancemetaobject.cpp b/src/plugins/qmldesigner/core/instances/nodeinstancemetaobject.cpp
index bdd11310325..6d0a53514e7 100644
--- a/src/plugins/qmldesigner/core/instances/nodeinstancemetaobject.cpp
+++ b/src/plugins/qmldesigner/core/instances/nodeinstancemetaobject.cpp
@@ -34,11 +34,24 @@ int NodeInstanceMetaObject::metaCall(QMetaObject::Call call, int id, void **a)
     int metaCallReturnValue = -1;
 
     if (call == QMetaObject::WriteProperty
+        && property(id).userType() == QMetaType::QVariant
         && reinterpret_cast<QVariant *>(a[0])->type() == QVariant::Double
         && qIsNaN(reinterpret_cast<QVariant *>(a[0])->toDouble())) {
         return -1;
     }
 
+    if (call == QMetaObject::WriteProperty
+        && property(id).userType() == QMetaType::Double
+        && qIsNaN(*reinterpret_cast<double*>(a[0]))) {
+        return -1;
+    }
+
+    if (call == QMetaObject::WriteProperty
+        && property(id).userType() == QMetaType::Float
+        && qIsNaN(*reinterpret_cast<float*>(a[0]))) {
+        return -1;
+    }
+
     QVariant oldValue;
 
     if (call == QMetaObject::WriteProperty && !property(id).hasNotifySignal())
-- 
GitLab