From 00ae3b2323e9b138b0b43f301ec9da9407c66600 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 17 Oct 2019 15:04:41 +0200 Subject: Pass suitable nFormals when constructing JS stack frame The extra formal parameters for signal handlers are not passed in "registers" and therefore should not be given here. Fixes: QTBUG-78486 Change-Id: I18594e0139a7a23d4e53b41e8b00b1e9f2e07aeb Reviewed-by: Simon Hausmann --- tests/auto/qml/qmlcachegen/data/parameterAdjustment.qml | 7 +++++++ tests/auto/qml/qmlcachegen/qmlcachegen.pro | 3 ++- tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp | 10 ++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 tests/auto/qml/qmlcachegen/data/parameterAdjustment.qml (limited to 'tests/auto/qml/qmlcachegen') diff --git a/tests/auto/qml/qmlcachegen/data/parameterAdjustment.qml b/tests/auto/qml/qmlcachegen/data/parameterAdjustment.qml new file mode 100644 index 0000000000..2128a54d81 --- /dev/null +++ b/tests/auto/qml/qmlcachegen/data/parameterAdjustment.qml @@ -0,0 +1,7 @@ +import QtQml 2.12 + +QtObject { + signal testSignal(string a, int b, string c, bool d, bool e, real f, real g, bool h, int i, int j, string k, int l, string m, string n) + onTestSignal: {} + Component.onCompleted: testSignal("a", 1, "b", true, true, 0.1, 0.1, true, 1, 1, "a", 1, "a", "a") +} diff --git a/tests/auto/qml/qmlcachegen/qmlcachegen.pro b/tests/auto/qml/qmlcachegen/qmlcachegen.pro index 53b26ccfae..4daf1d35c3 100644 --- a/tests/auto/qml/qmlcachegen/qmlcachegen.pro +++ b/tests/auto/qml/qmlcachegen/qmlcachegen.pro @@ -17,7 +17,8 @@ RESOURCES += \ data/jsmoduleimport.qml \ data/script.mjs \ data/module.mjs \ - data/utils.mjs + data/utils.mjs \ + data/parameterAdjustment.qml workerscripts_test.files = \ data/worker.js \ diff --git a/tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp b/tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp index f89982f782..4a1f5378a6 100644 --- a/tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp +++ b/tests/auto/qml/qmlcachegen/tst_qmlcachegen.cpp @@ -73,6 +73,8 @@ private slots: void reproducibleCache_data(); void reproducibleCache(); + + void parameterAdjustment(); }; // A wrapper around QQmlComponent to ensure the temporary reference counts @@ -670,6 +672,14 @@ void tst_qmlcachegen::reproducibleCache() QCOMPARE(contents1, contents2); } +void tst_qmlcachegen::parameterAdjustment() +{ + QQmlEngine engine; + CleanlyLoadingComponent component(&engine, QUrl("qrc:///data/parameterAdjustment.qml")); + QScopedPointer obj(component.create()); + QVERIFY(!obj.isNull()); // Doesn't crash +} + QTEST_GUILESS_MAIN(tst_qmlcachegen) #include "tst_qmlcachegen.moc" -- cgit v1.2.3