aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4sequenceobject.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2025-08-27 11:37:51 +0200
committerUlf Hermann <ulf.hermann@qt.io>2025-09-01 19:25:20 +0200
commit68e35325165378a01bdf8ffddbe7450dbc6ebaba (patch)
treeca49a473df821be8b6a16388b33882cc9a282536 /src/qml/jsruntime/qv4sequenceobject.cpp
parent76dccf589d932f04af0faf00613a1951ac0dbd3b (diff)
QtQml: Factor out Sequence's variant data creation
We want to use it in other places. Pick-to: 6.10 6.9 6.8 Task-number: QTBUG-129972 Task-number: QTBUG-139025 Change-Id: I720c4a71144ab634d70a1ec0115ca81b8030d083 Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4sequenceobject.cpp')
-rw-r--r--src/qml/jsruntime/qv4sequenceobject.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/qml/jsruntime/qv4sequenceobject.cpp b/src/qml/jsruntime/qv4sequenceobject.cpp
index 89d4504967..201d1580e0 100644
--- a/src/qml/jsruntime/qv4sequenceobject.cpp
+++ b/src/qml/jsruntime/qv4sequenceobject.cpp
@@ -42,6 +42,14 @@ static ReturnedValue doGetIndexed(const Sequence *s, qsizetype index) {
return v->asReturnedValue();
}
+static void *createVariantData(QMetaType type, QVariant *variant)
+{
+ if (type == QMetaType::fromType<QVariant>())
+ return variant;
+ *variant = QVariant(type);
+ return variant->data();
+}
+
// helper function to generate valid warnings if errors occur during sequence operations.
static void generateWarning(QV4::ExecutionEngine *v4, const QString& description)
{
@@ -205,16 +213,8 @@ QVariant Sequence::shift()
const QMetaType v = p->valueMetaType();
const QMetaSequence m = p->metaSequence();
- const auto variantData = [&](QVariant *variant) -> void *{
- if (v == QMetaType::fromType<QVariant>())
- return variant;
-
- *variant = QVariant(v);
- return variant->data();
- };
-
QVariant result;
- void *resultData = variantData(&result);
+ void *resultData = createVariantData(v, &result);
m.valueAtIndex(storage, 0, resultData);
if (m.canRemoveValueAtBegin()) {
@@ -223,7 +223,7 @@ QVariant Sequence::shift()
}
QVariant t;
- void *tData = variantData(&t);
+ void *tData = createVariantData(v, &t);
for (qsizetype i = 1, end = m.size(storage); i < end; ++i) {
m.valueAtIndex(storage, i, tData);
m.setValueAtIndex(storage, i - 1, tData);