Fixed uninitialized memory in QMetaObjectBuilder::fromRelocatableData
authorRohan McGovern <rohan.mcgovern@nokia.com>
Tue, 1 May 2012 05:02:48 +0000 (15:02 +1000)
committerQt by Nokia <qt-info@nokia.com>
Tue, 1 May 2012 07:41:27 +0000 (09:41 +0200)
static_metacall was never set on the metaobject written by
QMetaObjectBuilder::fromRelocatableData, sometimes causing a crash.  It
should be initialized to 0.

Change-Id: I79373d895e131f0cc2ff1af6d2177a0c1a282be7
Reviewed-by: Toby Tomkins <toby.tomkins@nokia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
src/corelib/kernel/qmetaobjectbuilder.cpp
tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp

index 7736181..16ff58e 100644 (file)
@@ -1536,6 +1536,7 @@ void QMetaObjectBuilder::fromRelocatableData(QMetaObject *output,
     output->d.data = reinterpret_cast<const uint *>(buf + dataOffset);
     output->d.extradata = 0;
     output->d.relatedMetaObjects = 0;
+    output->d.static_metacall = 0;
 }
 
 /*!
index 8ae79e0..cfb2398 100644 (file)
@@ -1097,6 +1097,11 @@ void tst_QMetaObjectBuilder::relocatableData()
     QMetaObject *meta = builder.toMetaObject();
 
     QVERIFY(sameMetaObject(meta, &meta2));
+
+    QVERIFY(!meta2.d.extradata);
+    QVERIFY(!meta2.d.relatedMetaObjects);
+    QVERIFY(!meta2.d.static_metacall);
+
     free(meta);
 }