Hello community,
here is the log from the commit of package libqt5-qtdeclarative for
openSUSE:Factory checked in at 2016-06-25 01:56:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqt5-qtdeclarative (Old)
and /work/SRC/openSUSE:Factory/.libqt5-qtdeclarative.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt5-qtdeclarative"
Changes:
--------
---
/work/SRC/openSUSE:Factory/libqt5-qtdeclarative/libqt5-qtdeclarative.changes
2016-06-21 15:32:34.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.libqt5-qtdeclarative.new/libqt5-qtdeclarative.changes
2016-06-25 01:56:02.000000000 +0200
@@ -2 +2 @@
-Tue Jun 21 09:53:21 UTC 2016 - [email protected]
+Tue Jun 21 09:41:43 UTC 2016 - [email protected]
@@ -5 +5,15 @@
- - Fix crashes with i686 and QML loader (boo#985768)
+ * Fix crash with i586 and QML loaders (boo#985768)
+
+-------------------------------------------------------------------
+Thu Jun 16 15:39:26 UTC 2016 - [email protected]
+
+- Added qml_only_release_types_if_they_arent_referenced_anymore.patch
+
+-------------------------------------------------------------------
+Wed Jun 8 14:15:15 UTC 2016 - [email protected]
+
+- Update to 5.6.1
+ * For more details please see:
+ http://blog.qt.io/blog/2016/06/08/qt-5-6-1-released/
+- Drop upstreamed
+ Workaround-for-crashes-in-QtQml-code-relating-to-null-this-pointers.patch
Old:
----
Workaround-for-crashes-in-QtQml-code-relating-to-null-this-pointers.patch
qtdeclarative-opensource-src-5.6.0.tar.xz
New:
----
qml_only_release_types_if_they_arent_referenced_anymore.patch
qtdeclarative-opensource-src-5.6.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libqt5-qtdeclarative.spec ++++++
--- /var/tmp/diff_new_pack.FdiqYI/_old 2016-06-25 01:56:04.000000000 +0200
+++ /var/tmp/diff_new_pack.FdiqYI/_new 2016-06-25 01:56:04.000000000 +0200
@@ -21,22 +21,22 @@
%define libname libQtQuick5
Name: libqt5-qtdeclarative
-Version: 5.6.0
+Version: 5.6.1
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.6.0
-%define so_version 5.6.0
+%define real_version 5.6.1
+%define so_version 5.6.1
%define tar_version qtdeclarative-opensource-src-%{real_version}
Source: %{tar_version}.tar.xz
Source1: baselibs.conf
# PATCH-FIX-OPENSUSE overflow.patch -- Statement might be overflowing a buffer
Patch0: overflow.patch
-# PATCH-FIX-UPSTREAM
Workaround-for-crashes-in-QtQml-code-relating-to-null-this-pointers.patch
-Patch1:
Workaround-for-crashes-in-QtQml-code-relating-to-null-this-pointers.patch
+# PATCH-FIX-UPSTREAM
qml_only_release_types_if_they_arent_referenced_anymore.patch
+Patch1: qml_only_release_types_if_they_arent_referenced_anymore.patch
# PATCH-FIX-OPENSUSE:
qtdeclarative-opensource-src-5.6.0-qml_no-lifetime-dse.patch - fix crashes with
i586 and Plasma (boo #985768)
Patch2: qtdeclarative-opensource-src-5.6.0-qml_no-lifetime-dse.patch
BuildRequires: fdupes
++++++ overflow.patch ++++++
--- /var/tmp/diff_new_pack.FdiqYI/_old 2016-06-25 01:56:04.000000000 +0200
+++ /var/tmp/diff_new_pack.FdiqYI/_new 2016-06-25 01:56:04.000000000 +0200
@@ -1,13 +1,13 @@
--- a/src/qml/jsruntime/qv4value_p.h.orig 2015-08-23 09:15:03.157582462
+0200
+++ b/src/qml/jsruntime/qv4value_p.h 2015-08-23 09:19:46.516039994 +0200
-@@ -103,8 +103,8 @@ struct Q_QML_PRIVATE_EXPORT Value
- #endif
-
- #ifdef QV4_USE_64_BIT_VALUE_ENCODING
+@@ -123,8 +123,8 @@ struct Q_QML_PRIVATE_EXPORT Value
+ Q_ALWAYS_INLINE Heap::Base *m() const { Q_UNREACHABLE(); return
Q_NULLPTR; }
+ Q_ALWAYS_INLINE void setM(Heap::Base *b) { Q_UNUSED(b); Q_UNREACHABLE(); }
+ #elif defined(QV4_USE_64_BIT_VALUE_ENCODING)
- Q_ALWAYS_INLINE Heap::Base *m() const { Heap::Base *b; memcpy(&b, &_val,
8); return b; }
- Q_ALWAYS_INLINE void setM(Heap::Base *b) { memcpy(&_val, &b, 8); }
+ Q_ALWAYS_INLINE Heap::Base *m() const { Heap::Base *b; memcpy(&b, &_val,
QT_POINTER_SIZE); return b; }
+ Q_ALWAYS_INLINE void setM(Heap::Base *b) { memcpy(&_val, &b,
QT_POINTER_SIZE); }
#else // !QV4_USE_64_BIT_VALUE_ENCODING
- Q_ALWAYS_INLINE Heap::Base *m() const { Heap::Base *b; quint32 v =
value(); memcpy(&b, &v, 4); return b; }
+ Q_ALWAYS_INLINE Heap::Base *m() const {
Q_STATIC_ASSERT(sizeof(Heap::Base*) == sizeof(quint32)); Heap::Base *b; quint32
v = value(); memcpy(&b, &v, 4); return b; }
Q_ALWAYS_INLINE void setM(Heap::Base *b) { quint32 v; memcpy(&v, &b, 4);
setValue(v); }
++++++ qml_only_release_types_if_they_arent_referenced_anymore.patch ++++++
>From 9b1231ca3d21ade574a8a7cf3f0805a8b520bcd5 Mon Sep 17 00:00:00 2001
From: Ulf Hermann <[email protected]>
Date: Wed, 8 Jun 2016 17:32:32 +0200
Subject: [PATCH] QML: Only release types if they aren't referenced anymore
Just checking for references on m_compiledData is not enough. The
actual component can also be referenced. Thus it won't be deleted
on release(), but cannot be found in the type cache anymore.
Task-number: QTBUG-53761
Change-Id: I8567af8e75a078598e4fed31e4717134e1332278
Reviewed-by: Mitch Curtis <[email protected]>
Reviewed-by: Simon Hausmann <[email protected]>
(cherry picked from commit 2ac19881f92c94f4e9427bd9ff513210675f259e)
---
src/qml/qml/qqmltypeloader.cpp | 3 ++-
tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp | 15 ++++++++++++---
2 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp
index c684c86..01200fd 100644
--- a/src/qml/qml/qqmltypeloader.cpp
+++ b/src/qml/qml/qqmltypeloader.cpp
@@ -1961,7 +1961,8 @@ void QQmlTypeLoader::trimCache()
QList<TypeCache::Iterator> unneededTypes;
for (TypeCache::Iterator iter = m_typeCache.begin(), end =
m_typeCache.end(); iter != end; ++iter) {
QQmlTypeData *typeData = iter.value();
- if (typeData->m_compiledData && typeData->m_compiledData->count()
== 1) {
+ if (typeData->m_compiledData && typeData->count() == 1
+ && typeData->m_compiledData->count() == 1) {
// There are no live objects of this type
unneededTypes.append(iter);
}
diff --git a/tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp
b/tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp
index 7045c7c..a1eaa05 100644
--- a/tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp
+++ b/tests/auto/qml/qqmltypeloader/tst_qqmltypeloader.cpp
@@ -86,10 +86,19 @@ void tst_QQMLTypeLoader::trimCache()
url.setQuery(QString::number(i));
QQmlTypeData *data = loader.getType(url);
- if (i % 5 == 0) // keep references to some of them so that they aren't
trimmed
- data->compiledData()->addref();
+ // Run an event loop to receive the callback that release()es.
+ QTRY_COMPARE(data->count(), 2);
- data->release();
+ // keep references to some of them so that they aren't trimmed.
References to either the
+ // QQmlTypeData or its compiledData() should prevent the trimming.
+ if (i % 10 == 0) {
+ // keep ref on data, don't add ref on data->compiledData()
+ } else if (i % 5 == 0) {
+ data->compiledData()->addref();
+ data->release();
+ } else {
+ data->release();
+ }
}
for (int i = 0; i < 256; ++i) {
--
2.1.4
++++++ qtdeclarative-opensource-src-5.6.0.tar.xz ->
qtdeclarative-opensource-src-5.6.1.tar.xz ++++++
/work/SRC/openSUSE:Factory/libqt5-qtdeclarative/qtdeclarative-opensource-src-5.6.0.tar.xz
/work/SRC/openSUSE:Factory/.libqt5-qtdeclarative.new/qtdeclarative-opensource-src-5.6.1.tar.xz
differ: char 25, line 1