Uninitialized memory is compared.
authorMartin Jones <martin.jones@nokia.com>
Thu, 5 May 2011 03:24:32 +0000 (13:24 +1000)
committerOlivier Goffart <olivier.goffart@nokia.com>
Wed, 11 May 2011 15:00:06 +0000 (17:00 +0200)
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 7f74da4..253d744 100644 (file)
@@ -1451,6 +1451,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);
@@ -1465,6 +1466,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 dc941e2..425678c 100644 (file)
@@ -1448,6 +1448,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);
 }
@@ -1477,6 +1478,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;