Fix crash on QLocale::monthName().simplified()
Because monthName() returns a fromRawData() view of internal locale data, we have to avoid simplified()'s optimisation of re-using an unshared object; even if it's not shared, it's not mutable. Fixes: QTBUG-113415 Change-Id: Idac93175434c7a8a21228605578adbe4cc918e7a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
parent
79e6df3e84
commit
eede428084
@ -5737,6 +5737,8 @@ QString QString::simplified_helper(const QString &str)
|
|||||||
|
|
||||||
QString QString::simplified_helper(QString &str)
|
QString QString::simplified_helper(QString &str)
|
||||||
{
|
{
|
||||||
|
if (IS_RAW_DATA(str.d)) // Force a copy, even if not shared:
|
||||||
|
return QStringAlgorithms<const QString>::simplified_helper(str);
|
||||||
return QStringAlgorithms<QString>::simplified_helper(str);
|
return QStringAlgorithms<QString>::simplified_helper(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2547,6 +2547,7 @@ void tst_QLocale::monthName()
|
|||||||
QCOMPARE(c.monthName(1, QLocale::LongFormat), QLatin1String("January"));
|
QCOMPARE(c.monthName(1, QLocale::LongFormat), QLatin1String("January"));
|
||||||
QCOMPARE(c.monthName(1, QLocale::ShortFormat), QLatin1String("Jan"));
|
QCOMPARE(c.monthName(1, QLocale::ShortFormat), QLatin1String("Jan"));
|
||||||
QCOMPARE(c.monthName(1, QLocale::NarrowFormat), QLatin1String("1"));
|
QCOMPARE(c.monthName(1, QLocale::NarrowFormat), QLatin1String("1"));
|
||||||
|
QCOMPARE(c.monthName(3).simplified(), "March"); // QTBUG-113415 (crash)
|
||||||
|
|
||||||
const QLocale de("de_DE");
|
const QLocale de("de_DE");
|
||||||
QCOMPARE(de.monthName(12, QLocale::LongFormat), QLatin1String("Dezember"));
|
QCOMPARE(de.monthName(12, QLocale::LongFormat), QLatin1String("Dezember"));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user