From 6099e96d9eecce785c8540f7cceecb1504ff8396 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Wed, 12 Jan 2022 06:19:41 -0800 Subject: [PATCH] QJsonObject: use the UTF-8 string comparator in sorting No change, the two functions are identical for case-sensitive comparison. But this allows us to remove the comment that explained why we were abusing the Latin1 comparator. Change-Id: I0e5f6bec596a4a78bd3bfffd16c98bbcac6c9dc9 Reviewed-by: Marc Mutz Reviewed-by: Edward Welbourne --- src/corelib/serialization/qcborvalue_p.h | 1 + src/corelib/serialization/qjsonparser.cpp | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/corelib/serialization/qcborvalue_p.h b/src/corelib/serialization/qcborvalue_p.h index 5c8f244ad84..e23b9fccf98 100644 --- a/src/corelib/serialization/qcborvalue_p.h +++ b/src/corelib/serialization/qcborvalue_p.h @@ -116,6 +116,7 @@ struct ByteData QByteArray asByteArrayView() const { return QByteArray::fromRawData(byte(), len); } QLatin1String asLatin1() const { return QLatin1String(byte(), len); } + QUtf8StringView asUtf8StringView() const { return QUtf8StringView(byte(), len); } QStringView asStringView() const{ return QStringView(utf16(), len / 2); } QString asQStringRaw() const { return QString::fromRawData(utf16(), len / 2); } }; diff --git a/src/corelib/serialization/qjsonparser.cpp b/src/corelib/serialization/qjsonparser.cpp index 5dc2a309158..2514319e0e9 100644 --- a/src/corelib/serialization/qjsonparser.cpp +++ b/src/corelib/serialization/qjsonparser.cpp @@ -413,10 +413,7 @@ static void sortContainer(QCborContainerPrivate *container) if (bKey.flags & QtCbor::Element::StringIsUtf16) return QCborContainerPrivate::compareUtf8(aData, bData->asStringView()); - // We're missing an explicit UTF-8 to UTF-8 comparison in Qt, but - // UTF-8 to UTF-8 comparison retains simple byte ordering, so we'll - // abuse the Latin-1 comparison function. - return QtPrivate::compareStrings(aData->asLatin1(), bData->asLatin1()); + return QtPrivate::compareStrings(aData->asUtf8StringView(), bData->asUtf8StringView()); } };