aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/qml
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-05-16 10:35:21 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-05-16 10:35:21 +0200
commitcf2bf011ae0f33bed963d088f8267746a3369c4c (patch)
tree12c244d7bbb9d1a75a15632292aa14bafeea0c42 /tests/auto/qml
parent3fff03048a48aa7ead6e888165b2ae5a118d675c (diff)
parent039071ea5e93d93deb0103e7c9488198dcce55d6 (diff)
Merge remote-tracking branch 'origin/5.13' into dev
Diffstat (limited to 'tests/auto/qml')
-rw-r--r--tests/auto/qml/qqmlengine/data/CachedGetterLookup.qml20
-rw-r--r--tests/auto/qml/qqmlengine/tst_qqmlengine.cpp11
2 files changed, 31 insertions, 0 deletions
diff --git a/tests/auto/qml/qqmlengine/data/CachedGetterLookup.qml b/tests/auto/qml/qqmlengine/data/CachedGetterLookup.qml
new file mode 100644
index 0000000000..1a2a7ff341
--- /dev/null
+++ b/tests/auto/qml/qqmlengine/data/CachedGetterLookup.qml
@@ -0,0 +1,20 @@
+import QtQuick 2.12
+
+QtObject {
+ Component.onCompleted: {
+ // create getter
+ var getFoo = function(o) { return o.foo; }
+
+ // create two diffrent shapes for x,y
+ var x = { foo:1 , bar:2 }
+ var y = { bar:2 , foo:1 }
+
+ // initialize inline cache with getFoo
+ getFoo(x);
+ getFoo(y);
+
+ // hit getter lookup with string "crash"
+ getFoo('crash');
+ }
+}
+
diff --git a/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp b/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp
index b9cb6b70d2..0cb6753020 100644
--- a/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp
+++ b/tests/auto/qml/qqmlengine/tst_qqmlengine.cpp
@@ -81,6 +81,7 @@ private slots:
void cppSignalAndEval();
void singletonInstance();
void aggressiveGc();
+ void cachedGetterLookup_qtbug_75335();
public slots:
QObject *createAQObjectForOwnershipTest ()
@@ -1056,6 +1057,16 @@ void tst_qqmlengine::aggressiveGc()
qputenv("QV4_MM_AGGRESSIVE_GC", origAggressiveGc);
}
+void tst_qqmlengine::cachedGetterLookup_qtbug_75335()
+{
+ QQmlEngine engine;
+ const QUrl testUrl = testFileUrl("CachedGetterLookup.qml");
+ QQmlComponent component(&engine, testUrl);
+ QVERIFY(component.isReady());
+ QScopedPointer<QObject> object(component.create());
+ QVERIFY(object != nullptr);
+}
+
QTEST_MAIN(tst_qqmlengine)
#include "tst_qqmlengine.moc"