diff --git a/libqt5-fix-crash-with-early-QObject-property-access.patch b/libqt5-fix-crash-with-early-QObject-property-access.patch deleted file mode 100644 index 9ba1c80..0000000 --- a/libqt5-fix-crash-with-early-QObject-property-access.patch +++ /dev/null @@ -1,142 +0,0 @@ -From b0835b31fd456c30ea3fcaae6edc58212556477d Mon Sep 17 00:00:00 2001 -From: Simon Hausmann -Date: Thu, 21 Aug 2014 13:10:33 +0200 -Subject: [PATCH] Fix crash with early QObject property access - -In the reported bug, it can happen that we try to access the compile-time resolved -QObject property of an object that is referenced by id. The binding that uses this is -triggered when the property changes but _also_ when the id referenced object gets either -created or deleted. The first time the binding is evaluated is very early on, when the -id referenced object is not created yet, so the binding evaluation fails. However the -dependency is set up, and so later then the id referenced object is created and the id -property is set on the context, the notification triggers and the binding is re-evaluated. -During that binding evaluation a QObject property access happens by index on an object that -doesn't have its VME meta-object set up yet. Therefore the property access fails and a -crash occurs or the Q_ASSERT(property) assertion fails. - -The fix is to set register the id named object in the context _after_ the VME meta-object is -setup. - -Task-number: QTBUG-40018 -Change-Id: Ic2d7b4a0c49635efe68e93f2f6c316eb65f0c309 -Reviewed-by: Lars Knoll ---- - src/qml/qml/qqmlobjectcreator.cpp | 18 ++++++++++++----- - src/qml/qml/qqmlobjectcreator_p.h | 2 ++ - .../qml/qqmllanguage/data/earlyIdObjectAccess.qml | 23 ++++++++++++++++++++++ - tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp | 10 ++++++++++ - 4 files changed, 48 insertions(+), 5 deletions(-) - create mode 100644 tests/auto/qml/qqmllanguage/data/earlyIdObjectAccess.qml - ---- qtdeclarative-opensource-src-5.3.1.orig/src/qml/qml/qqmlobjectcreator.cpp -+++ qtdeclarative-opensource-src-5.3.1/src/qml/qml/qqmlobjectcreator.cpp -@@ -1013,6 +1013,13 @@ void QQmlObjectCreator::recordError(cons - errors << error; - } - -+void QQmlObjectCreator::registerObjectWithContextById(int objectIndex, QObject *instance) const -+{ -+ QHash::ConstIterator idEntry = objectIndexToId.find(objectIndex); -+ if (idEntry != objectIndexToId.constEnd()) -+ context->setIdProperty(idEntry.value(), instance); -+} -+ - QObject *QQmlObjectCreator::createInstance(int index, QObject *parent, bool isContextObject) - { - QQmlObjectCreationProfiler profiler(sharedState->profiler.profiler); -@@ -1112,10 +1119,6 @@ QObject *QQmlObjectCreator::createInstan - parserStatus->d = &sharedState->allParserStatusCallbacks.top(); - } - -- QHash::ConstIterator idEntry = objectIndexToId.find(index); -- if (idEntry != objectIndexToId.constEnd()) -- context->setIdProperty(idEntry.value(), instance); -- - // Register the context object in the context early on in order for pending binding - // initialization to find it available. - if (isContextObject) -@@ -1130,8 +1133,10 @@ QObject *QQmlObjectCreator::createInstan - } - } - -- if (isComponent) -+ if (isComponent) { -+ registerObjectWithContextById(index, instance); - return instance; -+ } - - QQmlRefPointer cache = propertyCaches.at(index); - Q_ASSERT(!cache.isNull()); -@@ -1288,6 +1293,9 @@ bool QQmlObjectCreator::populateInstance - } else { - vmeMetaObject = QQmlVMEMetaObject::get(_qobject); - } -+ -+ registerObjectWithContextById(index, _qobject); -+ - qSwap(_propertyCache, cache); - qSwap(_vmeMetaObject, vmeMetaObject); - ---- qtdeclarative-opensource-src-5.3.1.orig/src/qml/qml/qqmlobjectcreator_p.h -+++ qtdeclarative-opensource-src-5.3.1/src/qml/qml/qqmlobjectcreator_p.h -@@ -110,6 +110,8 @@ private: - QString stringAt(int idx) const { return qmlUnit->header.stringAt(idx); } - void recordError(const QV4::CompiledData::Location &location, const QString &description); - -+ void registerObjectWithContextById(int objectIndex, QObject *instance) const; -+ - enum Phase { - Startup, - CreatingObjects, ---- /dev/null -+++ qtdeclarative-opensource-src-5.3.1/tests/auto/qml/qqmllanguage/data/earlyIdObjectAccess.qml -@@ -0,0 +1,23 @@ -+import QtQuick 2.0 -+ -+Item { -+ visible: false -+ property bool success: false -+ property bool loading: true -+ -+ Item { -+ visible: someOtherItem.someProperty -+ onVisibleChanged: { -+ if (!visible) { -+ success = loading -+ } -+ } -+ } -+ -+ Item { -+ id: someOtherItem -+ property bool someProperty: true -+ } -+ -+ Component.onCompleted: loading = false -+} ---- qtdeclarative-opensource-src-5.3.1.orig/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp -+++ qtdeclarative-opensource-src-5.3.1/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp -@@ -240,6 +240,8 @@ private slots: - - void noChildEvents(); - -+ void earlyIdObjectAccess(); -+ - private: - QQmlEngine engine; - QStringList defaultImportPathList; -@@ -3791,6 +3793,14 @@ void tst_qqmllanguage::noChildEvents() - QCOMPARE(object->childAddedEventCount(), 0); - } - -+void tst_qqmllanguage::earlyIdObjectAccess() -+{ -+ QQmlComponent component(&engine, testFileUrl("earlyIdObjectAccess.qml")); -+ QScopedPointer o(component.create()); -+ QVERIFY(!o.isNull()); -+ QVERIFY(o->property("success").toBool()); -+} -+ - QTEST_MAIN(tst_qqmllanguage) - - #include "tst_qqmllanguage.moc" diff --git a/libqt5-qtdeclarative.changes b/libqt5-qtdeclarative.changes index fbccb2a..c50c85f 100644 --- a/libqt5-qtdeclarative.changes +++ b/libqt5-qtdeclarative.changes @@ -1,3 +1,114 @@ +------------------------------------------------------------------- +Thu Sep 4 20:37:34 UTC 2014 - hrvoje.senjan@gmail.com + +- Update to 5.3.2~git20140904 (rd8bc98b): + * Tip of the bugfix 5.3.2 branch + * Contains many bugfixes over 5.3.1 release: + * Doc: Added a link to the QML advanced tutorial + * Don't use d->instanceModel after free'ing it + * Fix crash with early QObject property access + * Fix typo in DelegateModelGroup documentation + * Protect some members in QQmlObjectCreator + * Initialize variable + * Don't abuse new to do a reinterpret_cast + * Protect incubation against its creator being deleted. + * Add 5.3.2 changelog for qtdeclarative + * Fix crash with recursively loading cached compilation units + * Fix typo in StateChangeScript documentation. + * Added the QtSQL dependency info. to the project file + * tst_dialogs: verify that rootObject is valid + * tst_dialogs: QTRY_ on the expression + (spyVisibilityChanged.count) not the variable. + * The cached objects can be deleted, so keep them in a QPointer + * Fix potential deadlook in threaded renderloop. + * Added a signal handler + * Fix typo in Context2D documentation. + * Disable threaded FBO canvas drawing when not supported. + * V4 JIT: fix JS stack frame size calculation. + * Correct strokeRect documentation. + * Silence harmless compiler warning. + * benchmarks: Skip compilation of (and mark with FIXME) a few + benchmarks that don't build. + * benchmarks/particles: fix projects to actually build + * Fix compilation of tst_compilation (:-P) benchmark. + * Avoid double deletion when deleting an incubating component. + * Invalidate the scenegraph properly in the rendercontrol + * Fix crash when loading invalid QML with behavior on + invalid group property + * Fix crash when animators are deleted just after being started + * Don't try to reload QQuick images when changing to + null screen + * Clarify Component.onCompleted/onDestruction docs + * Fix fbo creation and resize logic in QQuickWidget + * Fix Qt.include with cached compilation units and resources + * Synchronize PathView gesture grabbing with other items. + * Fix FBO recreated every time the QSG node is updated under + some conditions + * More QQuickCanvas cleanup handling. + * Make canvas cleanup work propertly... + * Use the current context to resolve extensions. + * qmlplugindumper: do not pop up a window if + an assert is triggered + * Fix assertion: ASSERT: "hasException" in file + jsruntime/qv4engine.cpp, line 933 + * Fix QQmlDelegateModel getting out of sync + * QQuickWindow: add some links to resetOpenGLState + * Remove metaobject revisioning for QQuickScreenAttached + * Don't dereference null pointer. + * Flickable: Cancel interaction on interactive changes + * Don't try to draw shader effect sources with dims < 0. + * QQuickMouseArea: Mark override functions with Q_DECL_OVERRIDE + * Fix interaction of garbage collector with JS objects during + QML type instantiation + * Do not use mark() when marking ExecutionContexts + * Don't recreate header and footer unnecessarily + * Clear the visibleImgTags list when setting up the text layout + * Improve programmatic flicking of ListView (and Flickable). + * V4: work around a bug in libc++'s std::vector + * QQmlComponent::create(): visual items must have + a visual parent + * Clean up the textures when deleting the content + * Schedule layout changes to avoid refill() recursion. + * Add autotest for incorrect steal of flick. + * Do not crash AtlasTexture if image is null + * Fix Node object leak in QQuickTextEditPrivate + * shift and unshift fail for QQmlSequence types + * Check for window != 0 in QuickTestResult::grabImage(). + * Doc: add documentation for the RSS News example + * Fix typo in documentation + * Binding Text width to implicitWidth can result in + incorrect layout + * Docs: fix "classname" indentation in the qmldir specs + * Fix role for generic Accessible items + * Calqlatr demo: Remove unused files + * Remove usage of external dependencies from the RSS News demo + * Fix crash on QQmlEngine destruction. + * Don't dereference null QQuickWindowPrivate. + * Add opt-out environment variable for @2x images + * Doc: correct link/compilation errors in Qt Declarative + * Fix crash in Flickable with pressDelay. + * Skip rssnews demo if xmlpatterns is not present + * Delete objects created by qmlplugindump + * Avoid double deletion of QQuickWindow + * Fix QQmlDelegateModel ignoring layoutChange in + certain situations + * Fix intermittent crash with older MinGW releases + * Doc: Add documentation for the Maroon in Trouble example + * Fix crash when deleting component in Component.onComplete + through loader + * Fix memory leak in QQmlComponent::createObject + * Update QtQuick import value to 2.3 + * Set locked state while locking for grab. + * QQmlObjectCreator: Clear sharedState componentAttached + in destruction/clear + * Initialize velocity + * Improve RSS News Qt Quick Demo + * Fix QQmlComponent detailed description. + * Add a QQuickWidget - QQuickView comparison example + * Fix crash in QObjectWrapper +- libqt5-fix-crash-with-early-QObject-property-access.patch, + merged upstream + ------------------------------------------------------------------- Fri Aug 29 09:49:55 UTC 2014 - mlin@suse.com diff --git a/libqt5-qtdeclarative.spec b/libqt5-qtdeclarative.spec index c63d61e..9bd7612 100644 --- a/libqt5-qtdeclarative.spec +++ b/libqt5-qtdeclarative.spec @@ -16,29 +16,23 @@ # -%define qt5_snapshot 0 +%define qt5_snapshot 1 %define libname libQtQuick5 Name: libqt5-qtdeclarative -Version: 5.3.1 +Version: 5.3.2~git20140904 Release: 0 Summary: Qt 5 Declarative Library License: SUSE-LGPL-2.1-with-digia-exception-1.1 or GPL-3.0 Group: Development/Libraries/X11 Url: http://qt.digia.com %define base_name libqt5 -%define real_version 5.3.1 -%define so_version 5.3.1 -%if %qt5_snapshot -%define tar_version qtdeclarative-%{real_version} -%else +%define real_version 5.3.2 +%define so_version 5.3.2 %define tar_version qtdeclarative-opensource-src-%{real_version} -%endif Source: %{tar_version}.tar.xz Source1: baselibs.conf -# PATCH-FIX-UPSTREAM libqt5-fix-crash-with-early-QObject-property-access.patch -- QTBUG-40018 -Patch1000: libqt5-fix-crash-with-early-QObject-property-access.patch BuildRequires: fdupes BuildRequires: libQt5Core-private-headers-devel >= %{version} BuildRequires: libQt5Gui-private-headers-devel >= %{version} @@ -67,12 +61,7 @@ This package contains base tools, like string, xml, and network handling. %prep -%if %qt5_snapshot -%setup -q -n qtdeclarative-%{real_version} -%else %setup -q -n qtdeclarative-opensource-src-%{real_version} -%endif -%patch1000 -p1 %package -n %libname Summary: Qt 5 Declarative Library @@ -168,7 +157,8 @@ for i in * ; do done popd -%fdupes -s %{buildroot}/%{_libqt5_includedir} +%fdupes -s %{buildroot}%{_libqt5_includedir} +%fdupes -s %{buildroot}%{_libqt5_examplesdir} %files -n %libname %defattr(-,root,root,755) diff --git a/qtdeclarative-opensource-src-5.3.1.tar.xz b/qtdeclarative-opensource-src-5.3.1.tar.xz deleted file mode 100644 index 3092628..0000000 --- a/qtdeclarative-opensource-src-5.3.1.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a80d401dfbb64f109abf210cb32775a102f7b2420b3a3175b8dab0792220380 -size 17611096 diff --git a/qtdeclarative-opensource-src-5.3.2.tar.xz b/qtdeclarative-opensource-src-5.3.2.tar.xz new file mode 100644 index 0000000..fcd8848 --- /dev/null +++ b/qtdeclarative-opensource-src-5.3.2.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02bd64b60824ac61e6e38c4ba3f2d00b757526ab420af225777cd1b5d5e01ba8 +size 18443472