diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/jsruntime/qv4engine.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp index 958a994cc3..6883c219bc 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp @@ -1597,9 +1597,11 @@ static QVariant toVariant(QV4::ExecutionEngine *e, const QV4::Value &value, QMet continue; } } - asVariant = toVariant(e, arrayValue, valueMetaType, false, - visitedObjects); - if (valueMetaType.id() != QMetaType::QVariant) { + + asVariant = toVariant(e, arrayValue, valueMetaType, false, visitedObjects); + if (valueMetaType == QMetaType::fromType<QVariant>()) { + retnAsIterable.metaContainer().addValue(retn.data(), &asVariant); + } else { auto originalType = asVariant.metaType(); bool couldConvert = asVariant.convert(valueMetaType); if (!couldConvert) { @@ -1610,8 +1612,8 @@ static QVariant toVariant(QV4::ExecutionEngine *e, const QV4::Value &value, QMet // create default constructed value asVariant = QVariant(valueMetaType, nullptr); } + retnAsIterable.metaContainer().addValue(retn.data(), asVariant.constData()); } - retnAsIterable.metaContainer().addValue(retn.data(), asVariant.constData()); } return retn; } |