summaryrefslogtreecommitdiffstats
path: root/src/corelib/text/qlocale.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/text/qlocale.cpp')
-rw-r--r--src/corelib/text/qlocale.cpp26
1 files changed, 10 insertions, 16 deletions
diff --git a/src/corelib/text/qlocale.cpp b/src/corelib/text/qlocale.cpp
index 15a65f2203..89928a5e87 100644
--- a/src/corelib/text/qlocale.cpp
+++ b/src/corelib/text/qlocale.cpp
@@ -583,16 +583,10 @@ static const QLocaleData *default_data = nullptr;
static const QLocaleData *const c_data = locale_data;
static QLocalePrivate *c_private()
{
- static QLocalePrivate c_locale{
- c_data, Q_BASIC_ATOMIC_INITIALIZER(1), 0, QLocale::OmitGroupSeparator };
+ static QLocalePrivate c_locale(c_data, 0, QLocale::OmitGroupSeparator, 1);
return &c_locale;
}
-static const QLocaleData *systemData();
-static uint defaultIndex();
-Q_GLOBAL_STATIC_WITH_ARGS(QExplicitlySharedDataPointer<QLocalePrivate>, systemLocalePrivate,
- (QLocalePrivate::create(systemData(), defaultIndex())))
-
#ifndef QT_NO_SYSTEMLOCALE
/******************************************************************************
** Default system locale behavior
@@ -743,7 +737,7 @@ QDataStream &operator>>(QDataStream &ds, QLocale &l)
static const int locale_data_size = sizeof(locale_data)/sizeof(QLocaleData) - 1;
Q_GLOBAL_STATIC_WITH_ARGS(QSharedDataPointer<QLocalePrivate>, defaultLocalePrivate,
- (QLocalePrivate::create(defaultData(), defaultIndex())))
+ (new QLocalePrivate(defaultData(), defaultIndex())))
static QLocalePrivate *localePrivateByName(const QString &name)
{
@@ -751,9 +745,9 @@ static QLocalePrivate *localePrivateByName(const QString &name)
return c_private();
const int index = QLocaleData::findLocaleIndex(QLocaleId::fromName(name));
Q_ASSERT(index >= 0 && size_t(index) < std::size(locale_data) - 1);
- return QLocalePrivate::create(locale_data + index, index,
- locale_data[index].m_language_id == QLocale::C
- ? QLocale::OmitGroupSeparator : QLocale::DefaultNumberOptions);
+ return new QLocalePrivate(locale_data + index, index,
+ locale_data[index].m_language_id == QLocale::C
+ ? QLocale::OmitGroupSeparator : QLocale::DefaultNumberOptions);
}
static QLocalePrivate *findLocalePrivate(QLocale::Language language, QLocale::Script script,
@@ -775,7 +769,7 @@ static QLocalePrivate *findLocalePrivate(QLocale::Language language, QLocale::Sc
data = defaultData();
index = defaultIndex();
}
- return QLocalePrivate::create(data, index, numberOptions);
+ return new QLocalePrivate(data, index, numberOptions);
}
QString QLocaleData::decimalPoint() const
@@ -2442,10 +2436,10 @@ QString QLocale::toString(double i, char f, int prec) const
QLocale QLocale::system()
{
+ static QLocalePrivate locale(systemData(), defaultIndex(), DefaultNumberOptions, 1);
QT_PREPEND_NAMESPACE(systemData)(); // trigger updating of the system data if necessary
- if (systemLocalePrivate.isDestroyed())
- return QLocale(QLocale::C);
- return QLocale(*systemLocalePrivate->data());
+
+ return QLocale(locale);
}
@@ -2484,7 +2478,7 @@ QList<QLocale> QLocale::matchingLocales(QLocale::Language language,
const QLocaleId id = locale_data[index].id();
if (filter.acceptScriptCountry(id)) {
result.append(QLocale(*(id.language_id == C ? c_private()
- : QLocalePrivate::create(locale_data + index, index))));
+ : new QLocalePrivate(locale_data + index, index))));
}
++index;
} while (filter.acceptLanguage(locale_data[index].m_language_id));