summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
authorAnton Kudryavtsev <a.kudryavtsev@netris.ru>2016-01-28 16:58:24 +0300
committerAnton Kudryavtsev <a.kudryavtsev@netris.ru>2016-01-29 08:16:00 +0000
commitf416561702e6162466ce23818a987db69a5053b5 (patch)
tree3c9110db102f4b1558f09937512d56e8852d977d /src/network
parent49388f3dfde04a52cfc80cd628c2bc9af92a19e6 (diff)
QNetworkHeadersPrivate: use erase and std::remove_if with QList
... instead of using erase in a loop, with quadratic complexity. Change-Id: I91053ddb58639615e8864e5be20861e7cceb815e Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Diffstat (limited to 'src/network')
-rw-r--r--src/network/access/qnetworkrequest.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp
index 9c187a12ec..c188918024 100644
--- a/src/network/access/qnetworkrequest.cpp
+++ b/src/network/access/qnetworkrequest.cpp
@@ -51,6 +51,8 @@
# include <stdio.h>
#endif
+#include <algorithm>
+
QT_BEGIN_NAMESPACE
/*!
@@ -991,13 +993,12 @@ void QNetworkHeadersPrivate::setCookedHeader(QNetworkRequest::KnownHeaders heade
void QNetworkHeadersPrivate::setRawHeaderInternal(const QByteArray &key, const QByteArray &value)
{
- RawHeadersList::Iterator it = rawHeaders.begin();
- while (it != rawHeaders.end()) {
- if (qstricmp(it->first.constData(), key.constData()) == 0)
- it = rawHeaders.erase(it);
- else
- ++it;
- }
+ auto firstEqualsKey = [&key](const RawHeaderPair &header) {
+ return qstricmp(header.first.constData(), key.constData()) == 0;
+ };
+ rawHeaders.erase(std::remove_if(rawHeaders.begin(), rawHeaders.end(),
+ firstEqualsKey),
+ rawHeaders.end());
if (value.isNull())
return; // only wanted to erase key