Uninitialized memory is compared.
authorMartin Jones <martin.jones@nokia.com>
Thu, 5 May 2011 03:24:32 +0000 (13:24 +1000)
committerMartin Jones <martin.jones@nokia.com>
Mon, 30 May 2011 05:47:52 +0000 (15:47 +1000)
Memory is allocated and used without first clearing it.  At
the least this annoys valgrind, but also has potential for real
problems.

Change-Id: Icf3fd39f44ee0481dd732510e7f8b3ad6cef477d
Task-number: QTBUG-15187
Reviewed-by: Aaron Kennedy
(cherry picked from commit 95aa4e4f9b82c3652ffc93310b190db869d491df)

src/declarative/qml/qdeclarativeproperty.cpp
src/declarative/qml/qmetaobjectbuilder.cpp

index 1cd3363..b91b820 100644 (file)
@@ -1454,6 +1454,7 @@ QByteArray QDeclarativePropertyPrivate::saveValueType(const QMetaObject *metaObj
     QMetaProperty subProp = subObject->property(subIndex);
 
     ValueTypeSerializedData sd;
+    memset(&sd, 0, sizeof(sd));
     sd.isValueType = true;
     sd.core.load(metaObject->property(index));
     sd.valueType.flags = QDeclarativePropertyCache::Data::flagsForProperty(subProp);
@@ -1468,6 +1469,7 @@ QByteArray QDeclarativePropertyPrivate::saveValueType(const QMetaObject *metaObj
 QByteArray QDeclarativePropertyPrivate::saveProperty(const QMetaObject *metaObject, int index)
 {
     SerializedData sd;
+    memset(&sd, 0, sizeof(sd));
     sd.isValueType = false;
     sd.core.load(metaObject->property(index));
 
index a63656b..d8a7b77 100644 (file)
@@ -1452,6 +1452,7 @@ QMetaObject *QMetaObjectBuilder::toMetaObject() const
 {
     int size = buildMetaObject(d, 0, false);
     char *buf = reinterpret_cast<char *>(qMalloc(size));
+    memset(buf, 0, size);
     buildMetaObject(d, buf, false);
     return reinterpret_cast<QMetaObject *>(buf);
 }
@@ -1481,6 +1482,7 @@ QByteArray QMetaObjectBuilder::toRelocatableData(bool *ok) const
     QByteArray data;
     data.resize(size);
     char *buf = data.data();
+    memset(buf, 0, size);
     buildMetaObject(d, buf, true);
     if (ok) *ok = true;
     return data;