From 98e7da8e3249dd36ad628d06097ba6b529c8a9cc Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Wed, 23 Aug 2023 17:50:28 +0300 Subject: [PATCH] QNetworkCookie: add QBAV overload for parseCookies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rewrite impl to reduce allocations by QL1S::tokenize Change-Id: I8d131ef6d7fe9a1a9daa438efea026392deb5e55 Reviewed-by: MÃ¥rten Nordheim --- src/network/access/qnetworkcookie.cpp | 14 +++++++++++--- src/network/access/qnetworkcookie.h | 1 + 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 @@ -930,13 +930,21 @@ static QDateTime parseDateString(QByteArrayView dateString) \sa toRawForm() */ QList QNetworkCookie::parseCookies(const QByteArray &cookieString) +{ + return parseCookies(QByteArrayView(cookieString)); +} + +/*! + \overload + \since 6.7 +*/ +QList QNetworkCookie::parseCookies(QByteArrayView cookieString) { // cookieString can be a number of set-cookie header strings joined together // by \n, parse each line separately. QList cookies; - QList 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 parseCookies(const QByteArray &cookieString); + static QList parseCookies(QByteArrayView cookieString); private: QSharedDataPointer d;