aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2022-11-30 12:51:12 +0100
committerUlf Hermann <ulf.hermann@qt.io>2022-12-02 13:35:31 +0100
commitf0528befa0e1a4a02b90fd31517fdbb88279e0b6 (patch)
tree98e7bb65bf9e4a477cd0bdbdbe362fccf82c9123
parent784367ad1722a550e83e4925da2d4809adeca750 (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.cpp12
-rw-r--r--tests/auto/qml/qjsengine/tst_qjsengine.cpp1
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()));
{