diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2023-09-25 08:44:56 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2023-09-25 12:30:07 +0200 |
commit | 9c8d76b6ce036fe5e5f17cdcff3c6b22f15b4b65 (patch) | |
tree | 61964ea80c1cc6cd3ec14b11ded206e537b0acf6 /src/qml/jsruntime/qv4sequenceobject.cpp | |
parent | bcda7aa6e442a33203eb99b63427dcd1ad1fd343 (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.cpp | 5 |
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: |