Simplify QMetaObject::newInstance
authorJędrzej Nowacki <jedrzej.nowacki@nokia.com>
Tue, 13 Mar 2012 15:36:49 +0000 (16:36 +0100)
committerQt by Nokia <qt-info@nokia.com>
Wed, 14 Mar 2012 22:04:57 +0000 (23:04 +0100)
To create space on stack for a QObject pointer QVariant is not really
essential.

Change-Id: Iaf04a4f77005e33823f0e14bfdc6fe927cb59867
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Kent Hansen <kent.hansen@nokia.com>
src/corelib/kernel/qmetaobject.cpp

index cacd999..428c262 100644 (file)
@@ -207,13 +207,13 @@ QObject *QMetaObject::newInstance(QGenericArgument val0,
     if (idx < 0)
         return 0;
 
-    QVariant ret(QMetaType::QObjectStar, (void*)0);
-    void *param[] = {ret.data(), val0.data(), val1.data(), val2.data(), val3.data(), val4.data(),
+    QObject *returnValue = 0;
+    void *param[] = {&returnValue, val0.data(), val1.data(), val2.data(), val3.data(), val4.data(),
                      val5.data(), val6.data(), val7.data(), val8.data(), val9.data()};
 
     if (static_metacall(CreateInstance, idx, param) >= 0)
         return 0;
-    return *reinterpret_cast<QObject**>(param[0]);
+    return returnValue;
 }
 
 /*!