aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2021-06-16 15:01:00 +0200
committerUlf Hermann <ulf.hermann@qt.io>2021-06-17 13:05:24 +0200
commit94063d0c01b1471554773c00c2f6dd4a916fe0ac (patch)
tree1f767eb384312193d805e4e3c8feb6efe37b0be1 /src
parentaa7a10ce8b062bad4df40afc63d2fea34744a2fb (diff)
Fix conversion of entries to be added to QVariantLists
We should pass the variants themselves, not their constData(). Fixes: QTBUG-94502 Change-Id: I92688348d7b46d74935dc11080b26290f5e8be86 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit dbe34dfa0d42510b804c898b77d6fe145473c31b)
Diffstat (limited to 'src')
-rw-r--r--src/qml/jsruntime/qv4engine.cpp10
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;
}