From 82c827fc56218ab2d217eb8e645a4ae3b404ba92 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Mon, 4 Dec 2023 10:12:06 -0500 Subject: [PATCH] Ladybird/Qt: Support non-ASCII when converting a QString to a String MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QString is UTF-16, thus QString::size returns the number of UTF-16 code units. Thus, we would fail to perform, for example: ak_string_from_qstring(QString("😀")); Which is 2 UTF-16 code units, but 4 UTF-8 code units. --- Ladybird/Qt/StringUtils.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Ladybird/Qt/StringUtils.cpp b/Ladybird/Qt/StringUtils.cpp index 59ec635f3f..1b2bdfcb36 100644 --- a/Ladybird/Qt/StringUtils.cpp +++ b/Ladybird/Qt/StringUtils.cpp @@ -13,7 +13,8 @@ AK::DeprecatedString ak_deprecated_string_from_qstring(QString const& qstring) ErrorOr ak_string_from_qstring(QString const& qstring) { - return String::from_utf8(StringView(qstring.toUtf8().data(), qstring.size())); + auto utf8_data = qstring.toUtf8(); + return String::from_utf8(StringView(utf8_data.data(), utf8_data.size())); } QString qstring_from_ak_string(StringView ak_string)