QT_BEGIN_NAMESPACE
#ifndef QT_NO_SYSTEMLOCALE
-static QSystemLocale *_systemLocale = 0;
+static const qint16 systemLocaleIndex = localeTblSize + 1;
+static QSystemLocale *_systemLocale = Q_NULLPTR;
class QSystemLocaleSingleton: public QSystemLocale
{
public:
QSystemLocaleSingleton() : QSystemLocale(true) {}
};
Q_GLOBAL_STATIC(QSystemLocaleSingleton, QSystemLocale_globalSystemLocale)
-static QLocalePrivate *system_lp = 0;
+static QLocalePrivate *system_lp = Q_NULLPTR;
Q_GLOBAL_STATIC(QLocalePrivate, globalLocalePrivate)
#endif
return &localeTbl[i];
}
- return defaultPrivate();
+ return &localeTbl[0];
}
static bool parse_locale_tag(const QString &input, int &i, QString *result, const QString &separators)
QSystemLocale::~QSystemLocale()
{
if (_systemLocale == this) {
- _systemLocale = 0;
+ _systemLocale = Q_NULLPTR;
if (system_lp)
system_lp->m_language = QLocale::AnyLanguage;
static quint16 localePrivateIndex(const QLocalePrivate *p)
{
+#ifndef QT_NO_SYSTEMLOCALE
+ if (p && p == system_lp)
+ return systemLocaleIndex;
+#endif
for (qint16 i = 0; i < localeTblSize; i++) {
if (p->m_language == localeTbl[i].m_language
&& p->m_country == localeTbl[i].m_country
const QLocalePrivate *QLocale::d() const
{
#ifndef QT_NO_SYSTEMLOCALE
- Q_ASSERT(p.index <= localeTblSize);
- if (p.index == localeTblSize)
+ Q_ASSERT(p.index <= systemLocaleIndex);
+ if (p.index == systemLocaleIndex)
return system_lp;
#else
- Q_ASSERT(p.index < localeTblSize);
+ Q_ASSERT(p.index < systemLocaleIndex);
#endif
return &localeTbl[p.index];