From 67b5fe0afbf7d32f845261690faa6b8554a2e308 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 6 Jan 2010 13:41:10 +0100 Subject: Check if the property is cached in QmlGraphicsVisualDataModel::stringValue This fixes a Bauhaus crash. Task-number: BAUHAUS-227 Reviewed-by: Kai Koehne --- .../graphicsitems/qmlgraphicsvisualitemmodel.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/declarative/graphicsitems/qmlgraphicsvisualitemmodel.cpp b/src/declarative/graphicsitems/qmlgraphicsvisualitemmodel.cpp index b482db7..5b80ee0 100644 --- a/src/declarative/graphicsitems/qmlgraphicsvisualitemmodel.cpp +++ b/src/declarative/graphicsitems/qmlgraphicsvisualitemmodel.cpp @@ -908,14 +908,18 @@ QString QmlGraphicsVisualDataModel::stringValue(int index, const QString &name) QmlDeclarativeData *ddata = QmlDeclarativeData::get(data); if (ddata && ddata->propertyCache) { QmlPropertyCache::Data *prop = ddata->propertyCache->property(name); - if (prop->propType == QVariant::String) { - void *args[] = { &val, 0 }; - QMetaObject::metacall(data, QMetaObject::ReadProperty, prop->coreIndex, args); - } else if (prop->propType == qMetaTypeId()) { - QVariant v; - void *args[] = { &v, 0 }; - QMetaObject::metacall(data, QMetaObject::ReadProperty, prop->coreIndex, args); - val = v.toString(); + if (prop) { + if (prop->propType == QVariant::String) { + void *args[] = { &val, 0 }; + QMetaObject::metacall(data, QMetaObject::ReadProperty, prop->coreIndex, args); + } else if (prop->propType == qMetaTypeId()) { + QVariant v; + void *args[] = { &v, 0 }; + QMetaObject::metacall(data, QMetaObject::ReadProperty, prop->coreIndex, args); + val = v.toString(); + } + } else { + val = data->property(name.toUtf8()).toString(); } } else { val = data->property(name.toUtf8()).toString(); -- cgit v0.12