diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2022-11-30 12:51:12 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2022-12-02 13:35:31 +0100 |
commit | f0528befa0e1a4a02b90fd31517fdbb88279e0b6 (patch) | |
tree | 98e7bb65bf9e4a477cd0bdbdbe362fccf82c9123 | |
parent | 784367ad1722a550e83e4925da2d4809adeca750 (diff) |
QQmlMetaObjectWrapper: A metaobject is not equal to a non-metaobject
In particular, the Qt object's prototype is not equal to anything.
Change-Id: I208d0bd914b0890e842775d273f2d3b5c63c1d36
Reviewed-by: Sami Shalayel <sami.shalayel@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
-rw-r--r-- | src/qml/jsruntime/qv4qobjectwrapper.cpp | 12 | ||||
-rw-r--r-- | tests/auto/qml/qjsengine/tst_qjsengine.cpp | 1 |
2 files changed, 5 insertions, 8 deletions
diff --git a/src/qml/jsruntime/qv4qobjectwrapper.cpp b/src/qml/jsruntime/qv4qobjectwrapper.cpp index 2d33b5f36e..e249c8a6d8 100644 --- a/src/qml/jsruntime/qv4qobjectwrapper.cpp +++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp @@ -2622,19 +2622,15 @@ ReturnedValue QMetaObjectWrapper::constructInternal(const Value *argv, int argc) bool QMetaObjectWrapper::virtualIsEqualTo(Managed *a, Managed *b) { - Q_ASSERT(a->as<QMetaObjectWrapper>()); - QMetaObjectWrapper *aMetaObject = a->as<QMetaObjectWrapper>(); - QMetaObjectWrapper *bMetaObject = b->as<QMetaObjectWrapper>(); - if (!bMetaObject) - return true; - return aMetaObject->metaObject() == bMetaObject->metaObject(); + const QMetaObjectWrapper *aMetaObject = a->as<QMetaObjectWrapper>(); + Q_ASSERT(aMetaObject); + const QMetaObjectWrapper *bMetaObject = b->as<QMetaObjectWrapper>(); + return bMetaObject && aMetaObject->metaObject() == bMetaObject->metaObject(); } DEFINE_OBJECT_VTABLE(QMetaObjectWrapper); - - void Heap::QmlSignalHandler::init(QObject *object, int signalIndex) { Object::init(); diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp index 400a4135fe..b5e49ee89e 100644 --- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp +++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp @@ -1036,6 +1036,7 @@ void tst_QJSEngine::newQMetaObject() { QCOMPARE(metaObject.toQMetaObject(), &TestQMetaObject::staticMetaObject); QVERIFY(metaObject.strictlyEquals(engine.newQMetaObject<TestQMetaObject>())); + QVERIFY(!metaObject.strictlyEquals(engine.newArray())); { |