QLocale: try to survive being created during application shut down

QLocale is very often accessed during global static destructors, so
let's try and survive if the default has already been destroyed. In that
case, we shall fall back to the C locale.

I've placed the call to systemData(), which updates the system locale,
before the initialization of defaultLocalePrivate, as the initialization
of the latter depends on the former.

Task-number: QTBUG-133206
Pick-to: 6.8
Change-Id: I48e29b45f9be4514336cfffdf5affa5631a956a3
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Reviewed-by: Albert Astals Cid <aacid@kde.org>
(cherry picked from commit e0a1f491567f2495443babc5aa36a038260f96c6)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Thiago Macieira 2025-01-24 10:43:38 -08:00 committed by Qt Cherry-pick Bot
parent 4bff9e3582
commit bcc0e6124a

View File

@ -1211,10 +1211,13 @@ QLocale::QLocale(QStringView name)
*/
QLocale::QLocale()
: d(*defaultLocalePrivate)
: d(c_private())
{
// Make sure system data is up to date:
systemData();
if (!defaultLocalePrivate.isDestroyed()) {
// Make sure system data is up to date:
systemData();
d = *defaultLocalePrivate;
}
}
/*!