summaryrefslogtreecommitdiffstats
path: root/src/corelib/io/qdataurl.cpp
diff options
context:
space:
mode:
authorAnton Kudryavtsev <anton.kudryavtsev@vk.team>2023-08-28 18:42:07 +0300
committerAnton Kudryavtsev <anton.kudryavtsev@vk.team>2023-09-02 15:36:00 +0300
commit9f7c79462668a9d09a004b6522b34c62574436c8 (patch)
tree8ce1e13761dde12da84dacf7456a407ee1a01dca /src/corelib/io/qdataurl.cpp
parent28aee9009378571faea642c0ce48141b5f139f85 (diff)
qDecodeDataUrl: use QBAV more
to reduce allocations Change-Id: Ia2d68186ee56556152254c6579a52131b246b07f Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/corelib/io/qdataurl.cpp')
-rw-r--r--src/corelib/io/qdataurl.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/corelib/io/qdataurl.cpp b/src/corelib/io/qdataurl.cpp
index 92c6f541229..7ba3311f0df 100644
--- a/src/corelib/io/qdataurl.cpp
+++ b/src/corelib/io/qdataurl.cpp
@@ -26,12 +26,14 @@ Q_CORE_EXPORT bool qDecodeDataUrl(const QUrl &uri, QString &mimeType, QByteArray
// reality often differs from the specification. People have
// data: URIs with ? and #
//QByteArray data = QByteArray::fromPercentEncoding(uri.path(QUrl::FullyEncoded).toLatin1());
- QByteArray data = QByteArray::fromPercentEncoding(uri.url(QUrl::FullyEncoded | QUrl::RemoveScheme).toLatin1());
+ const QByteArray dataArray =
+ QByteArray::fromPercentEncoding(uri.url(QUrl::FullyEncoded | QUrl::RemoveScheme).toLatin1());
+ QByteArrayView data = dataArray;
// parse it:
const qsizetype pos = data.indexOf(',');
if (pos != -1) {
- payload = data.mid(pos + 1);
+ payload = data.mid(pos + 1).toByteArray();
data.truncate(pos);
data = data.trimmed();
@@ -41,17 +43,17 @@ Q_CORE_EXPORT bool qDecodeDataUrl(const QUrl &uri, QString &mimeType, QByteArray
data.chop(7);
}
+ QByteArrayView textPlain;
if (QLatin1StringView{data}.startsWith("charset"_L1, Qt::CaseInsensitive)) {
qsizetype i = 7; // strlen("charset")
while (data.at(i) == ' ')
++i;
if (data.at(i) == '=')
- data.prepend("text/plain;");
+ textPlain = "text/plain;";
}
if (!data.isEmpty())
- mimeType = QString::fromLatin1(data.trimmed());
-
+ mimeType = QString::fromLatin1(textPlain + data.trimmed());
}
return true;