diff options
| author | Anton Kudryavtsev <anton.kudryavtsev@vk.team> | 2023-08-28 18:42:07 +0300 |
|---|---|---|
| committer | Anton Kudryavtsev <anton.kudryavtsev@vk.team> | 2023-09-02 15:36:00 +0300 |
| commit | 9f7c79462668a9d09a004b6522b34c62574436c8 (patch) | |
| tree | 8ce1e13761dde12da84dacf7456a407ee1a01dca /src/corelib/io/qdataurl.cpp | |
| parent | 28aee9009378571faea642c0ce48141b5f139f85 (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.cpp | 12 |
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; |
