KDE 4.3.2
This commit is contained in:
parent
17e5b9a87f
commit
e3bcad9d80
@ -1 +1 @@
|
||||
kdelibs-4.3.1.tar.bz2
|
||||
kdelibs-4.3.2.tar.bz2
|
||||
|
256
kdelibs-4.3.2-kde#209712.patch
Normal file
256
kdelibs-4.3.2-kde#209712.patch
Normal file
@ -0,0 +1,256 @@
|
||||
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();
|
||||
+}
|
33
kdelibs.spec
33
kdelibs.spec
@ -3,8 +3,8 @@
|
||||
%define strigi_ver 0.7
|
||||
|
||||
Summary: K Desktop Environment 4 - Libraries
|
||||
Version: 4.3.1
|
||||
Release: 3%{?dist}
|
||||
Version: 4.3.2
|
||||
Release: 2%{?dist}
|
||||
|
||||
Name: kdelibs
|
||||
Epoch: 6
|
||||
@ -75,9 +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
|
||||
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
|
||||
@ -194,9 +196,13 @@ format for easy browsing.
|
||||
%patch20 -p1 -b .xxcmake
|
||||
%patch21 -p1 -b .ossl-1.x
|
||||
%patch22 -p1 -b .bookmarks
|
||||
%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
|
||||
@ -263,8 +269,10 @@ do
|
||||
done
|
||||
popd
|
||||
|
||||
%if 0%{?fedora} < 12
|
||||
install -p -m 644 -D %{SOURCE1} %{buildroot}%{_sysconfdir}/profile.d/kde4.sh
|
||||
install -p -m 644 -D %{SOURCE2} %{buildroot}%{_sysconfdir}/profile.d/kde4.csh
|
||||
%endif
|
||||
|
||||
# fix Sonnet documentation multilib conflict
|
||||
bunzip2 %{buildroot}%{_kde4_docdir}/HTML/en/sonnet/index.cache.bz2
|
||||
@ -309,12 +317,15 @@ rm -rf %{buildroot}
|
||||
%defattr(-,root,root,-)
|
||||
%doc AUTHORS README TODO
|
||||
%doc COPYING.LIB
|
||||
%if 0%{?fedora} < 12
|
||||
%config(noreplace) %{_sysconfdir}/profile.d/*
|
||||
%endif
|
||||
%{_kde4_bindir}/*
|
||||
%exclude %{_kde4_bindir}/kconfig_compiler4
|
||||
%{_kde4_appsdir}/*
|
||||
# kdewidgets
|
||||
%exclude %{_kde4_bindir}/makekdewidgets4
|
||||
%exclude %{_kde4_bindir}/kde4-doxygen.sh
|
||||
%exclude %{_kde4_appsdir}/kdewidgets/
|
||||
%exclude %{_kde4_appsdir}/cmake/
|
||||
%{_kde4_configdir}/*
|
||||
@ -384,6 +395,24 @@ rm -rf %{buildroot}
|
||||
|
||||
|
||||
%changelog
|
||||
* Wed Oct 07 2009 Than Ngo <than@redhat.com> - 4.3.2-2
|
||||
- fix a deadlock in KLocale
|
||||
|
||||
* Mon Oct 05 2009 Than Ngo <than@redhat.com> - 4.3.2-1
|
||||
- 4.3.2
|
||||
|
||||
* Wed Sep 23 2009 Rex Dieter <rdieter@fedoraproject.org> - 4.3.1-7
|
||||
- move /etc/profile.d/kde4.(sh|csh) to kde-settings (F-12+)
|
||||
|
||||
* Mon Sep 21 2009 Than Ngo <than@redhat.com> - 4.3.1-6
|
||||
- use abrt for RHEL
|
||||
|
||||
* Sat Sep 19 2009 Rex Dieter <rdieter@fedoraproject.org> - 4.3.1-5
|
||||
- groupdav connect to egroupware failed (kde#186763)
|
||||
|
||||
* Fri Sep 18 2009 Kevin Kofler <Kevin@tigcc.ticalc.org> - 4.3.1-4
|
||||
- ship kde4-doxygen.sh only in -devel (fix duplicate file)
|
||||
|
||||
* Fri Sep 04 2009 Than Ngo <than@redhat.com> - 4.3.1-3
|
||||
- security fix for -CVE-2009-2702
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user