diff options
Diffstat (limited to 'src/corelib/text/qcollator_icu.cpp')
-rw-r--r-- | src/corelib/text/qcollator_icu.cpp | 9 |
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()) { |