summaryrefslogtreecommitdiffstats
path: root/src/corelib/text/qcollator_icu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/text/qcollator_icu.cpp')
-rw-r--r--src/corelib/text/qcollator_icu.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/corelib/text/qcollator_icu.cpp b/src/corelib/text/qcollator_icu.cpp
index fbc422c342..84f9c51537 100644
--- a/src/corelib/text/qcollator_icu.cpp
+++ b/src/corelib/text/qcollator_icu.cpp
@@ -78,10 +78,10 @@ int QCollator::compare(QStringView s1, QStringView s2) const
if (!s2.size())
return +1;
- if (d->dirty)
- d->init();
+ d->ensureInitialized();
if (d->collator) {
+ // truncating sizes (QTBUG-105038)
return ucol_strcoll(d->collator,
reinterpret_cast<const UChar *>(s1.data()), s1.size(),
reinterpret_cast<const UChar *>(s2.data()), s2.size());
@@ -92,13 +92,14 @@ int QCollator::compare(QStringView s1, QStringView s2) const
QCollatorSortKey QCollator::sortKey(const QString &string) const
{
- if (d->dirty)
- d->init();
+ d->ensureInitialized();
+
if (d->isC())
return QCollatorSortKey(new QCollatorSortKeyPrivate(string.toUtf8()));
if (d->collator) {
QByteArray result(16 + string.size() + (string.size() >> 2), Qt::Uninitialized);
+ // truncating sizes (QTBUG-105038)
int size = ucol_getSortKey(d->collator, (const UChar *)string.constData(),
string.size(), (uint8_t *)result.data(), result.size());
if (size > result.size()) {