Hello community,

here is the log from the commit of package libqt4 for openSUSE:Factory checked 
in at 2019-02-28 21:25:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libqt4 (Old)
 and      /work/SRC/openSUSE:Factory/.libqt4.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libqt4"

Thu Feb 28 21:25:20 2019 rev:229 rq:679783 version:4.8.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/libqt4/libqt4.changes    2019-01-21 
11:07:07.378754111 +0100
+++ /work/SRC/openSUSE:Factory/.libqt4.new.28833/libqt4.changes 2019-02-28 
21:25:22.613893503 +0100
@@ -1,0 +2,11 @@
+Wed Feb 27 10:28:51 UTC 2019 - Fabian Vogt <[email protected]>
+
+- Drop libqt4-devel-doc, fails to build with GCC9
+
+-------------------------------------------------------------------
+Fri Feb 22 13:22:20 UTC 2019 - Fabian Vogt <[email protected]>
+
+- Add patch to fix build with GCC 9 (boo#1121214):
+  * 0001-Redo-the-Q_FOREACH-loop-control-without-GCC-statemen.patch
+
+-------------------------------------------------------------------

Old:
----
  libqt4-devel-doc.changes
  libqt4-devel-doc.spec

New:
----
  0001-Redo-the-Q_FOREACH-loop-control-without-GCC-statemen.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libqt4-sql-plugins.spec ++++++
--- /var/tmp/diff_new_pack.eRZB99/_old  2019-02-28 21:25:26.549892186 +0100
+++ /var/tmp/diff_new_pack.eRZB99/_new  2019-02-28 21:25:26.553892184 +0100
@@ -12,7 +12,7 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 # nodebuginfo
 

++++++ libqt4.spec ++++++
--- /var/tmp/diff_new_pack.eRZB99/_old  2019-02-28 21:25:26.573892178 +0100
+++ /var/tmp/diff_new_pack.eRZB99/_new  2019-02-28 21:25:26.581892176 +0100
@@ -12,7 +12,7 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
@@ -164,6 +164,8 @@
 Patch170:       fix-build-icu59.patch
 # PATCH-FIX-UPSTREAM fix bolder fonts in qt4 apps [boo#956357] [QTBUG#27301]
 Patch171:       fix-medium-font.diff
+# PATCH-FIX-UPSTREAM
+Patch172:       0001-Redo-the-Q_FOREACH-loop-control-without-GCC-statemen.patch
 # PATCH-FIX-OPENSUSE no-ssl3.patch
 Patch200:       no-ssl3.patch
 # PATCH-FIX-OPENSUSE qt4-openssl-1.1.0pre-3.patch
@@ -498,6 +500,7 @@
 %patch169 -p1
 %patch170 -p1
 %patch171 -p1
+%patch172 -p1
 %if 0%{?suse_version} >= 1330
 %patch200 -p1
 %patch201 -p1

++++++ 0001-Redo-the-Q_FOREACH-loop-control-without-GCC-statemen.patch ++++++
>From c35a3f519007af44c3b364b9af86f6a336f6411b Mon Sep 17 00:00:00 2001
From: Thiago Macieira <[email protected]>
Date: Tue, 11 Feb 2014 16:17:46 -0800
Subject: [PATCH] Redo the Q_FOREACH loop control without GCC statement
 expressions

It's possible to do without them, which probably makes the number of
supported compilers a lot bigger: they just need to support decltype()
or __typeof__.

That includes the Intel compiler. The old code was also apparently
working, but no one had realized the old workaround for some old version
was still in place.

The loop overhead is more or less the same. I have not done benchmarks,
but inspection of the generated assembly shows more or less the same
number of instructions.

Change-Id: I32d499c84a6ddd19d994b49f17a469acb5c3a3f1
Reviewed-by: Olivier Goffart <[email protected]>
Reviewed-by: Marc Mutz <[email protected]>
---
 src/corelib/global/qglobal.h | 24 +++++++++++++++++-------
 1 file changed, 17 insertions(+), 7 deletions(-)

Index: qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h
===================================================================
--- qt-everywhere-opensource-src-4.8.7.orig/src/corelib/global/qglobal.h
+++ qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h
@@ -2483,22 +2483,32 @@ typedef uint Flags;
 
 #endif /* Q_NO_TYPESAFE_FLAGS */
 
-#if defined(Q_CC_GNU) && !defined(Q_CC_INTEL) && !defined(Q_CC_RVCT)
+#if (defined(Q_CC_GNU) && !defined(Q_CC_RVCT))
 /* make use of typeof-extension */
 template <typename T>
 class QForeachContainer {
 public:
-    inline QForeachContainer(const T& t) : c(t), brk(0), i(c.begin()), 
e(c.end()) { }
+    inline QForeachContainer(const T& t) : c(t), i(c.begin()), e(c.end()), 
control(1) { }
     const T c;
     int brk;
     typename T::const_iterator i, e;
+    int control;
 };
 
-#define Q_FOREACH(variable, container)                                \
-for (QForeachContainer<__typeof__(container)> _container_(container); \
-     !_container_.brk && _container_.i != _container_.e;              \
-     __extension__  ({ ++_container_.brk; ++_container_.i; }))                 
      \
-    for (variable = *_container_.i;; __extension__ ({--_container_.brk; 
break;}))
+// Explanation of the control word:
+//  - it's initialized to 1
+//  - that means both the inner and outer loops start
+//  - if there were no breaks, at the end of the inner loop, it's set to 0, 
which
+//    causes it to exit (the inner loop is run exactly once)
+//  - at the end of the outer loop, it's inverted, so it becomes 1 again, 
allowing
+//    the outer loop to continue executing
+//  - if there was a break inside the inner loop, it will exit with control 
still
+//    set to 1; in that case, the outer loop will invert it to 0 and will exit 
too
+#  define Q_FOREACH(variable, container)                                \
+for (QForeachContainer<__typeof__((container))> _container_((container)); \
+     _container_.control && _container_.i != _container_.e;         \
+     ++_container_.i, _container_.control ^= 1)                     \
+    for (variable = *_container_.i; _container_.control; _container_.control = 
0)
 
 #else
 




Reply via email to