Hello community, here is the log from the commit of package libqt5-qtdeclarative for openSUSE:Factory checked in at 2019-06-07 18:01:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libqt5-qtdeclarative (Old) and /work/SRC/openSUSE:Factory/.libqt5-qtdeclarative.new.4811 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt5-qtdeclarative" Fri Jun 7 18:01:32 2019 rev:53 rq:707637 version:5.12.3 Changes: -------- --- /work/SRC/openSUSE:Factory/libqt5-qtdeclarative/libqt5-qtdeclarative.changes 2019-04-26 22:52:25.773393258 +0200 +++ /work/SRC/openSUSE:Factory/.libqt5-qtdeclarative.new.4811/libqt5-qtdeclarative.changes 2019-06-07 18:01:33.933794399 +0200 @@ -1,0 +2,6 @@ +Tue Jun 4 14:50:38 UTC 2019 - Fabian Vogt <fab...@ritter-vogt.de> + +- Add patch to fix crash (QTBUG-75203): + * Dont-crash-when-accessing-invalid-properties.patch + +------------------------------------------------------------------- New: ---- Dont-crash-when-accessing-invalid-properties.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libqt5-qtdeclarative.spec ++++++ --- /var/tmp/diff_new_pack.E0EGaV/_old 2019-06-07 18:01:34.721794119 +0200 +++ /var/tmp/diff_new_pack.E0EGaV/_new 2019-06-07 18:01:34.725794118 +0200 @@ -33,6 +33,8 @@ %define tar_version qtdeclarative-everywhere-src-5.12.3 Source: https://download.qt.io/official_releases/qt/5.12/%{real_version}/submodules/%{tar_version}.tar.xz Source1: baselibs.conf +# PATCH-FIX-UPSTREAM +Patch1: Dont-crash-when-accessing-invalid-properties.patch # PATCH-FIX-OPENSUSE sse2_nojit.patch -- enable JIT and sse2 only on sse2 case Patch100: sse2_nojit.patch # PATCH-FIX-OPENSUSE Switch to use python3 at build time @@ -68,8 +70,7 @@ handling. %prep -%setup -q -n %{tar_version} -%autopatch -p1 +%autosetup -p1 -n %{tar_version} %package -n %libname Summary: Qt 5 Declarative Library ++++++ Dont-crash-when-accessing-invalid-properties.patch ++++++ >From ea74f0c68cddf706c950d3910cf7b363fe24885b Mon Sep 17 00:00:00 2001 From: Ulf Hermann <ulf.herm...@qt.io> Date: Wed, 17 Apr 2019 12:35:42 +0200 Subject: [PATCH] Don't crash when accessing invalid properties through QObjectWrapper Change-Id: I613bf5dc685bb4235262b429d8f7318ea144fb9d Fixes: QTBUG-75203 Reviewed-by: Erik Verbruggen <erik.verbrug...@qt.io> --- src/qml/jsruntime/qv4qobjectwrapper.cpp | 2 +- .../undefinedPropertiesInObjectWrapper.qml | 20 +++++++++++++++++++ .../qml/qqmlecmascript/tst_qqmlecmascript.cpp | 10 ++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 tests/auto/qml/qqmlecmascript/data/undefinedPropertiesInObjectWrapper.qml Index: qtdeclarative-everywhere-src-5.12.3/src/qml/jsruntime/qv4qobjectwrapper.cpp =================================================================== --- qtdeclarative-everywhere-src-5.12.3.orig/src/qml/jsruntime/qv4qobjectwrapper.cpp +++ qtdeclarative-everywhere-src-5.12.3/src/qml/jsruntime/qv4qobjectwrapper.cpp @@ -856,7 +856,7 @@ ReturnedValue QObjectWrapper::virtualRes if (!ddata || !ddata->propertyCache) { QQmlPropertyData local; QQmlPropertyData *property = QQmlPropertyCache::property(engine->jsEngine(), qobj, name, qmlContext, local); - return getProperty(engine, qobj, property); + return property ? getProperty(engine, qobj, property) : QV4::Encode::undefined(); } QQmlPropertyData *property = ddata->propertyCache->property(name.getPointer(), qobj, qmlContext); Index: qtdeclarative-everywhere-src-5.12.3/tests/auto/qml/qqmlecmascript/data/undefinedPropertiesInObjectWrapper.qml =================================================================== --- /dev/null +++ qtdeclarative-everywhere-src-5.12.3/tests/auto/qml/qqmlecmascript/data/undefinedPropertiesInObjectWrapper.qml @@ -0,0 +1,20 @@ +import QtQuick 2.12 + +QtObject { + property list<QtObject> entries: [ + QtObject { + readonly property color color: "green" + }, + QtObject { + } + ] + + property Row row: Row { + Repeater { + model: entries + Rectangle { + color: model.color ? model.color : "red" + } + } + } +} Index: qtdeclarative-everywhere-src-5.12.3/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp =================================================================== --- qtdeclarative-everywhere-src-5.12.3.orig/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp +++ qtdeclarative-everywhere-src-5.12.3/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp @@ -366,6 +366,7 @@ private slots: void tailCallWithArguments(); void deleteSparseInIteration(); void saveAccumulatorBeforeToInt32(); + void undefinedPropertiesInObjectWrapper(); private: // static void propertyVarWeakRefCallback(v8::Persistent<v8::Value> object, void* parameter); @@ -8941,6 +8942,15 @@ void tst_qqmlecmascript::saveAccumulator QCOMPARE(value.toString(), QLatin1String("RangeError: Maximum call stack size exceeded.")); } +void tst_qqmlecmascript::undefinedPropertiesInObjectWrapper() +{ + QQmlEngine engine; + QQmlComponent component(&engine, testFile("undefinedPropertiesInObjectWrapper.qml")); + QVERIFY(component.isReady()); + QScopedPointer<QObject> object(component.create()); + QVERIFY(!object.isNull()); +} + QTEST_MAIN(tst_qqmlecmascript) #include "tst_qqmlecmascript.moc"