From 8fea227f3067029924e2b0c72d48ae6c5886df3c Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 23 Apr 2020 18:04:50 +0200 Subject: QUrl: optimize fromAce() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I255b8c806e1386f654c372e8a327ca7aef1b610a Reviewed-by: Lars Knoll Reviewed-by: MÃ¥rten Nordheim Reviewed-by: Thiago Macieira --- src/corelib/io/qurl.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp index 66c6026158..1ac8f1201e 100644 --- a/src/corelib/io/qurl.cpp +++ b/src/corelib/io/qurl.cpp @@ -422,6 +422,9 @@ QT_BEGIN_NAMESPACE +// in qstring.cpp: +void qt_from_latin1(ushort *dst, const char *str, size_t size) noexcept; + inline static bool isHex(char c) { c |= 0x20; @@ -3509,7 +3512,11 @@ QString QUrl::fromEncodedComponent_helper(const QByteArray &ba) */ QString QUrl::fromAce(const QByteArray &domain) { - return qt_ACE_do(QString::fromLatin1(domain), NormalizeAce, ForbidLeadingDot /*FIXME: make configurable*/); + QVarLengthArray buffer; + buffer.resize(domain.size()); + qt_from_latin1(buffer.data(), domain.data(), domain.size()); + return qt_ACE_do(QStringView{buffer.data(), buffer.size()}, + NormalizeAce, ForbidLeadingDot /*FIXME: make configurable*/); } /*! -- cgit v1.2.3