rpms/kdelibs/F-12 kdelibs-4.3.2-kde#209712.patch, NONE, 1.1 .cvsignore, 1.79, 1.80 kdelibs.spec, 1.518, 1.519 sources, 1.95, 1.96

Lukas Tinkl ltinkl at fedoraproject.org
Wed Oct 7 10:49:20 UTC 2009


Author: ltinkl

Update of /cvs/extras/rpms/kdelibs/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv10175/F-12

Modified Files:
	.cvsignore kdelibs.spec sources 
Added Files:
	kdelibs-4.3.2-kde#209712.patch 
Log Message:
KDE 4.3.2


kdelibs-4.3.2-kde#209712.patch:
 klocale.cpp          |   30 ++++++++++++++++--------------
 klocale_p.h          |   10 ++++++++++
 klocalizedstring.cpp |   24 +++++++++++-------------
 3 files changed, 37 insertions(+), 27 deletions(-)

--- NEW FILE kdelibs-4.3.2-kde#209712.patch ---
Index: kdecore/localization/klocale_p.h
===================================================================
--- kdecore/localization/klocale_p.h	(Revision 0)
+++ kdecore/localization/klocale_p.h	(Revision 1032185)
@@ -0,0 +1,10 @@
+#ifndef KLOCALE_P_H
+#define KLOCALE_P_H
+
+class QMutex;
+
+// Used by both KLocale and KLocalizedString, since they call each other.
+QMutex* kLocaleMutex();
+
+#endif /* KLOCALE_P_H */
+
Index: kdecore/localization/klocalizedstring.cpp
===================================================================
--- kdecore/localization/klocalizedstring.cpp	(Revision 1032184)
+++ kdecore/localization/klocalizedstring.cpp	(Revision 1032185)
@@ -24,6 +24,7 @@
 #include <kglobal.h>
 #include <kdebug.h>
 #include <klocale.h>
+#include <klocale_p.h>
 #include <kcomponentdata.h>
 #include <klibrary.h>
 #include <kstandarddirs.h>
@@ -126,8 +127,6 @@
 
     QHash<QString, KuitSemantics*> formatters;
 
-    QMutex mutex;
-
     KLocalizedStringPrivateStatics () :
         theFence("|/|"),
         startInterp("$["),
@@ -144,9 +143,7 @@
 
         translits(),
 
-        formatters(),
-
-        mutex(QMutex::Recursive)
+        formatters()
     {}
 
     ~KLocalizedStringPrivateStatics ()
@@ -216,7 +213,7 @@
 QString KLocalizedStringPrivate::toString (const KLocale *locale) const
 {
     KLocalizedStringPrivateStatics *s = staticsKLSP;
-    QMutexLocker lock(&s->mutex);
+    QMutexLocker lock(kLocaleMutex());
 
     // Assure the message has been supplied.
     if (msg.isEmpty())
@@ -474,7 +471,7 @@
                                              const QString &ctxt) const
 {
     KLocalizedStringPrivateStatics *s = staticsKLSP;
-    QMutexLocker lock(&s->mutex);
+    QMutexLocker lock(kLocaleMutex());
 
     QString final = text;
 
@@ -499,7 +496,7 @@
                                                        bool &fallback) const
 {
     KLocalizedStringPrivateStatics *s = staticsKLSP;
-    QMutexLocker lock(&s->mutex);
+    QMutexLocker lock(kLocaleMutex());
 
     if (s->ktrs == NULL)
         // Scripting engine not available.
@@ -564,7 +561,7 @@
     // fallback is set to true if Transcript evaluation requested so.
 
     KLocalizedStringPrivateStatics *s = staticsKLSP;
-    QMutexLocker lock(&s->mutex);
+    QMutexLocker lock(kLocaleMutex());
 
     result.clear();
     fallback = false;
@@ -716,7 +713,7 @@
 QVariant KLocalizedStringPrivate::segmentToValue (const QString &seg) const
 {
     KLocalizedStringPrivateStatics *s = staticsKLSP;
-    QMutexLocker lock(&s->mutex);
+    QMutexLocker lock(kLocaleMutex());
 
     // Return invalid variant if segment is either not a proper
     // value reference, or the reference is out of bounds.
@@ -751,7 +748,7 @@
                                                  const QString &final) const
 {
     KLocalizedStringPrivateStatics *s = staticsKLSP;
-    QMutexLocker lock(&s->mutex);
+    QMutexLocker lock(kLocaleMutex());
 
     if (s->ktrs == NULL)
         // Scripting engine not available.
@@ -945,7 +942,7 @@
 void KLocalizedStringPrivate::loadTranscript ()
 {
     KLocalizedStringPrivateStatics *s = staticsKLSP;
-    QMutexLocker lock(&s->mutex);
+    QMutexLocker lock(kLocaleMutex());
 
     s->loadTranscriptCalled = true;
     s->ktrs = NULL; // null indicates that Transcript is not available
@@ -979,7 +976,8 @@
         return;
     }
     KLocalizedStringPrivateStatics *s = staticsKLSP;
-    QMutexLocker lock(&s->mutex);
+    // Very important: do not the mutex here.
+    //QMutexLocker lock(kLocaleMutex());
 
     // Find script modules for all included language/catalogs that have them,
     // and remember their paths.
Index: kdecore/localization/klocale.cpp
===================================================================
--- kdecore/localization/klocale.cpp	(Revision 1032184)
+++ kdecore/localization/klocale.cpp	(Revision 1032185)
@@ -22,6 +22,7 @@
 */
 
 #include "klocale.h"
+#include "klocale_p.h"
 
 #include <config.h>
 
@@ -242,7 +243,6 @@
   // Handling of translation catalogs
   QStringList languageList;
 
-  QMutex* mutex;
   QList<KCatalogName> catalogNames; // list of all catalogs (regardless of language)
   QList<KCatalog> catalogs; // list of all found catalogs, one instance per catalog name and language
   int numberOfSysCatalogs; // number of catalogs that each app draws from
@@ -276,7 +276,6 @@
 KLocalePrivate::KLocalePrivate(const QString& catalog, KConfig *config, const QString &language_, const QString &country_)
     : language(language_),
       country(country_),
-      mutex(new QMutex(QMutex::Recursive)),
       useTranscript(false),
       codecForEncoding(0),
       languages(0), calendar(0),
@@ -311,7 +310,7 @@
 void KLocalePrivate::initMainCatalogs()
 {
   KLocaleStaticData *s = staticData;
-  QMutexLocker lock(mutex);
+  QMutexLocker lock(kLocaleMutex());
 
   if (!s->maincatalog.isEmpty()) {
       // If setMainCatalog was called, then we use that (e.g. korgac calls setMainCatalog("korganizer") to use korganizer.po)
@@ -541,7 +540,7 @@
 
 bool KLocalePrivate::setLanguage(const QString & _language, KConfig *config)
 {
-  QMutexLocker lock(mutex);
+  QMutexLocker lock(kLocaleMutex());
   languageList.removeAll( _language );
   languageList.prepend( _language ); // let us consider this language to be the most important one
 
@@ -563,7 +562,7 @@
 
 bool KLocalePrivate::setLanguage(const QStringList & languages)
 {
-  QMutexLocker lock(mutex);
+  QMutexLocker lock(kLocaleMutex());
   // This list might contain
   // 1) some empty strings that we have to eliminate
   // 2) duplicate entries like in de:fr:de, where we have to keep the first occurrence of a language in order
@@ -685,7 +684,7 @@
 
 void KLocale::insertCatalog( const QString & catalog )
 {
-  QMutexLocker lock(d->mutex);
+  QMutexLocker lock(kLocaleMutex());
     int pos = d->catalogNames.indexOf(KCatalogName(catalog));
     if (pos != -1) {
         ++d->catalogNames[pos].loadCount;
@@ -736,7 +735,7 @@
 
 void KLocale::removeCatalog(const QString &catalog)
 {
-    QMutexLocker lock(d->mutex);
+    QMutexLocker lock(kLocaleMutex());
     int pos = d->catalogNames.indexOf(KCatalogName(catalog));
     if (pos == -1)
         return;
@@ -749,7 +748,7 @@
 
 void KLocale::setActiveCatalog(const QString &catalog)
 {
-    QMutexLocker lock(d->mutex);
+    QMutexLocker lock(kLocaleMutex());
     int pos = d->catalogNames.indexOf(KCatalogName(catalog));
     if (pos == -1)
         return;
@@ -759,7 +758,6 @@
 
 KLocale::~KLocale()
 {
-    delete d->mutex;
     delete d->calendar;
     delete d->languages;
     delete d;
@@ -788,7 +786,7 @@
                 << "Fix the program" << endl;
   }
 
-  QMutexLocker locker(mutex);
+  QMutexLocker locker(kLocaleMutex());
   // determine the fallback string
   QString fallback;
   if ( msgid_plural == NULL )
@@ -1370,7 +1368,7 @@
     //Kibi-byte             KiB             2^10    1,024 bytes
 
     if (d->byteSizeFmt.size() == 0) {
-        QMutexLocker lock(d->mutex);
+        QMutexLocker lock(kLocaleMutex());
         // Pretranslated format strings for byte sizes.
         #define CACHEBYTEFMT(x) { \
             QString s; \
@@ -2568,7 +2566,6 @@
 {
   d->languages = 0; // Don't copy languages
   d->calendar = 0; // Don't copy the calendar
-  d->mutex = 0; // Don't copy the mutex
 }
 
 KLocale & KLocale::operator=(const KLocale & rhs)
@@ -2583,8 +2580,7 @@
 
 void KLocale::copyCatalogsTo(KLocale *locale)
 {
-    QMutexLocker lock(d->mutex);
-    QMutexLocker lockOther(locale->d->mutex);
+    QMutexLocker lock(kLocaleMutex());
     locale->d->catalogNames = d->catalogNames;
     locale->d->updateCatalogs();
 }
@@ -2656,3 +2652,9 @@
 {
     return d->dateTimeDigitSet;
 }
+
+Q_GLOBAL_STATIC_WITH_ARGS(QMutex, s_kLocaleMutex, (QMutex::Recursive))
+QMutex* kLocaleMutex()
+{
+    return s_kLocaleMutex();
+}


Index: .cvsignore
===================================================================
RCS file: /cvs/extras/rpms/kdelibs/F-12/.cvsignore,v
retrieving revision 1.79
retrieving revision 1.80
diff -u -p -r1.79 -r1.80
--- .cvsignore	1 Sep 2009 17:41:48 -0000	1.79
+++ .cvsignore	7 Oct 2009 10:49:19 -0000	1.80
@@ -1 +1 @@
-kdelibs-4.3.1.tar.bz2
+kdelibs-4.3.2.tar.bz2


Index: kdelibs.spec
===================================================================
RCS file: /cvs/extras/rpms/kdelibs/F-12/kdelibs.spec,v
retrieving revision 1.518
retrieving revision 1.519
diff -u -p -r1.518 -r1.519
--- kdelibs.spec	23 Sep 2009 19:40:39 -0000	1.518
+++ kdelibs.spec	7 Oct 2009 10:49:19 -0000	1.519
@@ -3,8 +3,8 @@
 %define strigi_ver 0.7
 
 Summary: K Desktop Environment 4 - Libraries
-Version: 4.3.1
-Release: 7%{?dist}
+Version: 4.3.2
+Release: 2%{?dist}
 
 Name: kdelibs
 Epoch: 6
@@ -75,12 +75,11 @@ Patch20: kdelibs-4.1.70-cmake.patch
 Patch21: kdelibs-4.3.1-ossl-1.x.patch
 # patch to fix keditbookmarks crash (kde#160679)
 Patch22: kdelibs-4.3.0-bookmarks.patch
-# http://bugs.kde.org/186763
-Patch23: kdelibs-4.3.1-kde186763.patch
 Patch24: kdelibs-4.3.1-drkonq.patch
 
 # upstream
 # 4.3 branch
+Patch100: kdelibs-4.3.2-kde#209712.patch
 
 # security fix
 Patch200: kdelibs-4.3.1-CVE-2009-2702.patch
@@ -197,13 +196,13 @@ format for easy browsing.
 %patch20 -p1 -b .xxcmake
 %patch21 -p1 -b .ossl-1.x
 %patch22 -p1 -b .bookmarks
-%patch23 -p1 -b .kde186763
 %if 0%{?rhel} > 5
 %patch24 -p1 -b .drkonq
 %endif
 
 # upstream patches
 # 4.3
+%patch100 -p0 -b .kde#209712
 
 # security fix
 %patch200 -p1 -b .CVE-2009-2702
@@ -396,6 +395,12 @@ rm -rf %{buildroot}
 
 
 %changelog
+* Wed Oct 07 2009 Than Ngo <than at redhat.com> - 4.3.2-2
+- fix a deadlock in KLocale
+
+* Mon Oct 05 2009 Than Ngo <than at redhat.com> - 4.3.2-1
+- 4.3.2
+
 * Wed Sep 23 2009 Rex Dieter <rdieter at fedoraproject.org> - 4.3.1-7
 - move /etc/profile.d/kde4.(sh|csh) to kde-settings (F-12+)
 


Index: sources
===================================================================
RCS file: /cvs/extras/rpms/kdelibs/F-12/sources,v
retrieving revision 1.95
retrieving revision 1.96
diff -u -p -r1.95 -r1.96
--- sources	28 Aug 2009 14:14:08 -0000	1.95
+++ sources	7 Oct 2009 10:49:20 -0000	1.96
@@ -1 +1 @@
-df6b6d261d46508c7b0abcdd983ffae2  kdelibs-4.3.1.tar.bz2
+0564ed8ba804a0f3f1cee9732a3d2d72  kdelibs-4.3.2.tar.bz2




More information about the fedora-extras-commits mailing list