From 766fce82b137e347cfc4a70a0467463a7ad7b30e Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Sun, 23 Jul 2023 12:54:31 +0800 Subject: [PATCH] Use efficient algorithm for removing entries PR #19351. --- src/base/net/downloadmanager.cpp | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/base/net/downloadmanager.cpp b/src/base/net/downloadmanager.cpp index 7669af79f..ea57d15cf 100644 --- a/src/base/net/downloadmanager.cpp +++ b/src/base/net/downloadmanager.cpp @@ -62,11 +62,10 @@ public: { const QDateTime now = QDateTime::currentDateTime(); QList cookies = Preferences::instance()->getNetworkCookies(); - for (const QNetworkCookie &cookie : asConst(Preferences::instance()->getNetworkCookies())) + cookies.erase(std::remove_if(cookies.begin(), cookies.end(), [&now](const QNetworkCookie &cookie) { - if (cookie.isSessionCookie() || (cookie.expirationDate() <= now)) - cookies.removeAll(cookie); - } + return cookie.isSessionCookie() || (cookie.expirationDate() <= now); + }), cookies.end()); setAllCookies(cookies); } @@ -75,11 +74,10 @@ public: { const QDateTime now = QDateTime::currentDateTime(); QList cookies = allCookies(); - for (const QNetworkCookie &cookie : asConst(allCookies())) + cookies.erase(std::remove_if(cookies.begin(), cookies.end(), [&now](const QNetworkCookie &cookie) { - if (cookie.isSessionCookie() || (cookie.expirationDate() <= now)) - cookies.removeAll(cookie); - } + return cookie.isSessionCookie() || (cookie.expirationDate() <= now); + }), cookies.end()); Preferences::instance()->setNetworkCookies(cookies); } @@ -91,11 +89,10 @@ public: { const QDateTime now = QDateTime::currentDateTime(); QList cookies = QNetworkCookieJar::cookiesForUrl(url); - for (const QNetworkCookie &cookie : asConst(QNetworkCookieJar::cookiesForUrl(url))) + cookies.erase(std::remove_if(cookies.begin(), cookies.end(), [&now](const QNetworkCookie &cookie) { - if (!cookie.isSessionCookie() && (cookie.expirationDate() <= now)) - cookies.removeAll(cookie); - } + return !cookie.isSessionCookie() && (cookie.expirationDate() <= now); + }), cookies.end()); return cookies; } @@ -104,11 +101,10 @@ public: { const QDateTime now = QDateTime::currentDateTime(); QList cookies = cookieList; - for (const QNetworkCookie &cookie : cookieList) + cookies.erase(std::remove_if(cookies.begin(), cookies.end(), [&now](const QNetworkCookie &cookie) { - if (!cookie.isSessionCookie() && (cookie.expirationDate() <= now)) - cookies.removeAll(cookie); - } + return !cookie.isSessionCookie() && (cookie.expirationDate() <= now); + }), cookies.end()); return QNetworkCookieJar::setCookiesFromUrl(cookies, url); }