summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Kudryavtsev <anton.kudryavtsev@vk.team>2023-08-23 17:50:28 +0300
committerAnton Kudryavtsev <anton.kudryavtsev@vk.team>2023-08-27 01:01:10 +0300
commit98e7da8e3249dd36ad628d06097ba6b529c8a9cc (patch)
treeb065198067a9bc1f6a0f17807aa5b54b1296c0fd
parent5442ebe5e843deac1b7cec49319df60c2080447d (diff)
QNetworkCookie: add QBAV overload for parseCookies
Rewrite impl to reduce allocations by QL1S::tokenize Change-Id: I8d131ef6d7fe9a1a9daa438efea026392deb5e55 Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
-rw-r--r--src/network/access/qnetworkcookie.cpp14
-rw-r--r--src/network/access/qnetworkcookie.h1
2 files changed, 12 insertions, 3 deletions
diff --git a/src/network/access/qnetworkcookie.cpp b/src/network/access/qnetworkcookie.cpp
index c02ac1ba31..fab8c98ed2 100644
--- a/src/network/access/qnetworkcookie.cpp
+++ b/src/network/access/qnetworkcookie.cpp
@@ -931,12 +931,20 @@ static QDateTime parseDateString(QByteArrayView dateString)
*/
QList<QNetworkCookie> QNetworkCookie::parseCookies(const QByteArray &cookieString)
{
+ return parseCookies(QByteArrayView(cookieString));
+}
+
+/*!
+ \overload
+ \since 6.7
+*/
+QList<QNetworkCookie> QNetworkCookie::parseCookies(QByteArrayView cookieString)
+{
// cookieString can be a number of set-cookie header strings joined together
// by \n, parse each line separately.
QList<QNetworkCookie> cookies;
- QList<QByteArray> list = cookieString.split('\n');
- for (int a = 0; a < list.size(); a++)
- cookies += QNetworkCookiePrivate::parseSetCookieHeaderLine(list.at(a));
+ for (auto s : QLatin1StringView(cookieString).tokenize('\n'_L1))
+ cookies += QNetworkCookiePrivate::parseSetCookieHeaderLine(s);
return cookies;
}
diff --git a/src/network/access/qnetworkcookie.h b/src/network/access/qnetworkcookie.h
index d4f4942288..c5642f7bd7 100644
--- a/src/network/access/qnetworkcookie.h
+++ b/src/network/access/qnetworkcookie.h
@@ -76,6 +76,7 @@ public:
void normalize(const QUrl &url);
static QList<QNetworkCookie> parseCookies(const QByteArray &cookieString);
+ static QList<QNetworkCookie> parseCookies(QByteArrayView cookieString);
private:
QSharedDataPointer<QNetworkCookiePrivate> d;