From 74642d42fc2d61bfbf9fdb0472e792109b5e2b3db7e3864d6c4eb1021788cc86 Mon Sep 17 00:00:00 2001 From: Stephan Kulow Date: Sun, 13 Jul 2014 12:05:56 +0000 Subject: [PATCH] Accepting request 240084 from KDE:Qt5 - Added 00010-Replace-the-const-QString-global-static-with-a-QStri.patch, fixes segfaulting in global destructor, for more details see: http://mail.kde.org/pipermail/kde-frameworks-devel/2014-June/017086.html - Added 00011-Use-correct-signal-name-when-disconnecting.patch, fixes crash on QtDBus unload OBS-URL: https://build.opensuse.org/request/show/240084 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/libqt5-qtbase?expand=0&rev=23 --- ...t-QString-global-static-with-a-QStri.patch | 49 +++++++++++++++++++ ...rrect-signal-name-when-disconnecting.patch | 29 +++++++++++ libqt5-qtbase.changes | 9 ++++ libqt5-qtbase.spec | 6 +++ 4 files changed, 93 insertions(+) create mode 100644 00010-Replace-the-const-QString-global-static-with-a-QStri.patch create mode 100644 00011-Use-correct-signal-name-when-disconnecting.patch diff --git a/00010-Replace-the-const-QString-global-static-with-a-QStri.patch b/00010-Replace-the-const-QString-global-static-with-a-QStri.patch new file mode 100644 index 0000000..b6eaf47 --- /dev/null +++ b/00010-Replace-the-const-QString-global-static-with-a-QStri.patch @@ -0,0 +1,49 @@ +From eda5c8ede9fd35117146d13f1b55775c9007b672 Mon Sep 17 00:00:00 2001 +From: Thiago Macieira +Date: Mon, 30 Jun 2014 08:31:22 -0700 +Subject: [PATCH 1/1] Replace the const QString global static with a + QStringLiteral + +It was originally created to avoid allocating memory for the QString at +every turn, but we have QStringLiteral for that today. It has also +served a very good run by catching qatomic.h implementations that had +bad cv qualifications. + +Change-Id: Id6d952b8cce363015ec2611d346b4cccedecf137 +--- + src/dbus/qdbusintegrator.cpp | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp +index d4079e8..bc28d50 100644 +--- a/src/dbus/qdbusintegrator.cpp ++++ b/src/dbus/qdbusintegrator.cpp +@@ -76,15 +76,21 @@ QT_BEGIN_NAMESPACE + static QBasicAtomicInt isDebugging = Q_BASIC_ATOMIC_INITIALIZER(-1); + #define qDBusDebug if (::isDebugging == 0); else qDebug + +-Q_GLOBAL_STATIC_WITH_ARGS(const QString, orgFreedesktopDBusString, (QLatin1String(DBUS_SERVICE_DBUS))) ++QString orgFreedesktopDBusString() ++{ ++ return QStringLiteral(DBUS_SERVICE_DBUS); ++} + + static inline QString dbusServiceString() +-{ return *orgFreedesktopDBusString(); } ++{ ++ return orgFreedesktopDBusString(); ++} ++ + static inline QString dbusInterfaceString() + { + // it's the same string, but just be sure +- Q_ASSERT(*orgFreedesktopDBusString() == QLatin1String(DBUS_INTERFACE_DBUS)); +- return *orgFreedesktopDBusString(); ++ Q_ASSERT(orgFreedesktopDBusString() == QLatin1String(DBUS_INTERFACE_DBUS)); ++ return orgFreedesktopDBusString(); + } + + static inline QDebug operator<<(QDebug dbg, const QThread *th) +-- +1.8.4.5 + diff --git a/00011-Use-correct-signal-name-when-disconnecting.patch b/00011-Use-correct-signal-name-when-disconnecting.patch new file mode 100644 index 0000000..5ab8184 --- /dev/null +++ b/00011-Use-correct-signal-name-when-disconnecting.patch @@ -0,0 +1,29 @@ +From 2160e7e0b7842d4ef49fdd435b4a7f127d479b90 Mon Sep 17 00:00:00 2001 +From: Jakub Adam +Date: Wed, 4 Jun 2014 14:48:02 +0200 +Subject: [PATCH] Use correct signal name when disconnecting "NameOwnerChanged" + +A disconnectSignal() call with a wrong signal name caused that hook +wasn't found and thus kept in QDBusConnectionPrivate::signalHooks +forever. + +Change-Id: Id7cda225be7580529fc835b377636226abb229f9 +--- + src/dbus/qdbusintegrator.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp +index 1fef6d4..d4079e8 100644 +--- a/src/dbus/qdbusintegrator.cpp ++++ b/src/dbus/qdbusintegrator.cpp +@@ -2272,7 +2272,7 @@ QDBusConnectionPrivate::disconnectSignal + watchedServices.erase(sit); + disconnectSignal(dbusServiceString(), QString(), dbusInterfaceString(), + QLatin1String("NameOwnerChanged"), QStringList() << hook.service, QString(), +- this, SLOT(_q_serviceOwnerChanged(QString,QString,QString))); ++ this, SLOT(serviceOwnerChangedNoLock(QString,QString,QString))); + } + } + } +-- +2.0.1 diff --git a/libqt5-qtbase.changes b/libqt5-qtbase.changes index 8ca00dc..1469176 100644 --- a/libqt5-qtbase.changes +++ b/libqt5-qtbase.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Thu Jul 3 19:17:01 UTC 2014 - hrvoje.senjan@gmail.com + +- Added 00010-Replace-the-const-QString-global-static-with-a-QStri.patch, + fixes segfaulting in global destructor, for more details see: + http://mail.kde.org/pipermail/kde-frameworks-devel/2014-June/017086.html +- Added 00011-Use-correct-signal-name-when-disconnecting.patch, + fixes crash on QtDBus unload + ------------------------------------------------------------------- Wed Jun 25 10:38:00 UTC 2014 - hrvoje.senjan@gmail.com diff --git a/libqt5-qtbase.spec b/libqt5-qtbase.spec index c1c7368..ccfb09f 100644 --- a/libqt5-qtbase.spec +++ b/libqt5-qtbase.spec @@ -65,6 +65,10 @@ Patch1002: 0003-Fix-data-race-on-QLoggingCategory-when-using-qDebug-.patch Patch1003: 0004-QDBus-fix-data-race-on-isDebugging-bool.patch # PATCH-FIX-UPSTREAM 0005-Translate-Super-Hyper-keys-to-MetaModifier.patch -- QTBUG-38428 Patch1004: 0005-Translate-Super-Hyper-keys-to-MetaModifier.patch +# PATCH-FIX-UPSTREAM 00010-Replace-the-const-QString-global-static-with-a-QStri.patch +Patch2000: 00010-Replace-the-const-QString-global-static-with-a-QStri.patch +# PATCH-FIX-UPSTREAM 00011-Use-correct-signal-name-when-disconnecting.patch +Patch2001: 00011-Use-correct-signal-name-when-disconnecting.patch BuildRequires: alsa-devel BuildRequires: cups-devel BuildRequires: fdupes @@ -159,6 +163,8 @@ handling. %patch1002 -p1 %patch1003 -p1 %patch1004 -p1 +%patch2000 -p1 +%patch2001 -p1 # be sure not to use them rm -r src/3rdparty/{libjpeg,freetype,libpng,zlib}