summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2020-04-23 18:04:50 +0200
committerMarc Mutz <marc.mutz@kdab.com>2020-05-02 07:30:30 +0200
commit8fea227f3067029924e2b0c72d48ae6c5886df3c (patch)
treec5245080e90c3cdf76b9c9531610624f8afcae24
parent84aad0ab7b13de8fc31dfb1f35696f2f83a7d4a2 (diff)
QUrl: optimize fromAce()
Change-Id: I255b8c806e1386f654c372e8a327ca7aef1b610a Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--src/corelib/io/qurl.cpp9
1 files changed, 8 insertions, 1 deletions
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<ushort> 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*/);
}
/*!