aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4sequenceobject.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2023-09-25 08:44:56 +0200
committerUlf Hermann <ulf.hermann@qt.io>2023-09-25 12:30:07 +0200
commit9c8d76b6ce036fe5e5f17cdcff3c6b22f15b4b65 (patch)
tree61964ea80c1cc6cd3ec14b11ded206e537b0acf6 /src/qml/jsruntime/qv4sequenceobject.cpp
parentbcda7aa6e442a33203eb99b63427dcd1ad1fd343 (diff)
QtQml: Check for isReference() before trying to write back
If we neglect this we get an assert further down the line. Amends commit a824a6f060ec3a0000d7349649a3ab9e0570ecaa. Pick-to: 6.6 6.5 Change-Id: Ib8fd01d329d5b45b27dfe117e168860c6a1d267f Reviewed-by: Semih Yavuz <semih.yavuz@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4sequenceobject.cpp')
-rw-r--r--src/qml/jsruntime/qv4sequenceobject.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/qml/jsruntime/qv4sequenceobject.cpp b/src/qml/jsruntime/qv4sequenceobject.cpp
index 775b90b637..cc899428c2 100644
--- a/src/qml/jsruntime/qv4sequenceobject.cpp
+++ b/src/qml/jsruntime/qv4sequenceobject.cpp
@@ -504,7 +504,7 @@ int Sequence::virtualMetacall(Object *object, QMetaObject::Call call, int index,
switch (call) {
case QMetaObject::ReadProperty: {
const QMetaType valueType = sequence->d()->valueMetaType();
- if (!sequence->loadReference())
+ if (sequence->d()->isReference() && !sequence->loadReference())
return 0;
const QMetaSequence metaSequence = sequence->d()->metaSequence();
if (metaSequence.valueMetaType() != valueType)
@@ -522,7 +522,8 @@ int Sequence::virtualMetacall(Object *object, QMetaObject::Call call, int index,
if (index < 0 || index >= metaSequence.size(storagePointer))
return 0;
metaSequence.setValueAtIndex(storagePointer, index, a[0]);
- sequence->storeReference();
+ if (sequence->d()->isReference())
+ sequence->storeReference();
break;
}
default: