Fix crashes when invoking toVariant() on empty QJsonValue objects.
Change-Id: I51cd114e862c6fad564484e990348f324ad56ab9 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
This commit is contained in:
parent
0edf1390ca
commit
77833b90c8
@ -384,9 +384,13 @@ QVariant QJsonValue::toVariant() const
|
|||||||
case String:
|
case String:
|
||||||
return toString();
|
return toString();
|
||||||
case Array:
|
case Array:
|
||||||
return QJsonArray(d, static_cast<QJsonPrivate::Array *>(base)).toVariantList();
|
return d ?
|
||||||
|
QJsonArray(d, static_cast<QJsonPrivate::Array *>(base)).toVariantList() :
|
||||||
|
QVariantList();
|
||||||
case Object:
|
case Object:
|
||||||
return QJsonObject(d, static_cast<QJsonPrivate::Object *>(base)).toVariantMap();
|
return d ?
|
||||||
|
QJsonObject(d, static_cast<QJsonPrivate::Object *>(base)).toVariantMap() :
|
||||||
|
QVariantMap();
|
||||||
case Null:
|
case Null:
|
||||||
case Undefined:
|
case Undefined:
|
||||||
break;
|
break;
|
||||||
|
@ -1062,6 +1062,8 @@ void tst_QtJson::fromVariantMap()
|
|||||||
|
|
||||||
void tst_QtJson::toVariantMap()
|
void tst_QtJson::toVariantMap()
|
||||||
{
|
{
|
||||||
|
QCOMPARE(QMetaType::Type(QJsonValue(QJsonObject()).toVariant().type()), QMetaType::QVariantMap); // QTBUG-32524
|
||||||
|
|
||||||
QJsonObject object;
|
QJsonObject object;
|
||||||
QVariantMap map = object.toVariantMap();
|
QVariantMap map = object.toVariantMap();
|
||||||
QVERIFY(map.isEmpty());
|
QVERIFY(map.isEmpty());
|
||||||
@ -1091,6 +1093,8 @@ void tst_QtJson::toVariantMap()
|
|||||||
|
|
||||||
void tst_QtJson::toVariantList()
|
void tst_QtJson::toVariantList()
|
||||||
{
|
{
|
||||||
|
QCOMPARE(QMetaType::Type(QJsonValue(QJsonArray()).toVariant().type()), QMetaType::QVariantList); // QTBUG-32524
|
||||||
|
|
||||||
QJsonArray array;
|
QJsonArray array;
|
||||||
QVariantList list = array.toVariantList();
|
QVariantList list = array.toVariantList();
|
||||||
QVERIFY(list.isEmpty());
|
QVERIFY(list.isEmpty());
|
||||||
|
Loading…
Reference in New Issue
Block a user