summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Kudryavtsev <a.kudryavtsev@netris.ru>2016-01-27 11:42:06 +0300
committerAnton Kudryavtsev <a.kudryavtsev@netris.ru>2016-01-28 14:03:35 +0000
commit9ac853059192a1f0da269ccdc03cb8a793473520 (patch)
treebda8fffbda6071359fe73c13faae23e8f16229a1
parent41e59ae0fa146f62f5f04ca3237d6ba119c951a0 (diff)
QHttpNetworkHeaderPrivate: use erase and std::remove_if with QList
... instead of using erase in a loop, with quadratic complexity. Change-Id: I9527923dcfc3201776a59de53dd5c03ca4d80063 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
-rw-r--r--src/network/access/qhttpnetworkheader.cpp15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/network/access/qhttpnetworkheader.cpp b/src/network/access/qhttpnetworkheader.cpp
index 60a55b0ef5..7199abbf17 100644
--- a/src/network/access/qhttpnetworkheader.cpp
+++ b/src/network/access/qhttpnetworkheader.cpp
@@ -39,6 +39,8 @@
#include "qhttpnetworkheader_p.h"
+#include <algorithm>
+
#ifndef QT_NO_HTTP
QT_BEGIN_NAMESPACE
@@ -103,13 +105,12 @@ QList<QByteArray> QHttpNetworkHeaderPrivate::headerFieldValues(const QByteArray
void QHttpNetworkHeaderPrivate::setHeaderField(const QByteArray &name, const QByteArray &data)
{
- QList<QPair<QByteArray, QByteArray> >::Iterator it = fields.begin();
- while (it != fields.end()) {
- if (qstricmp(name.constData(), it->first) == 0)
- it = fields.erase(it);
- else
- ++it;
- }
+ auto firstEqualsName = [&name](const QPair<QByteArray, QByteArray> &header) {
+ return qstricmp(name.constData(), header.first) == 0;
+ };
+ fields.erase(std::remove_if(fields.begin(), fields.end(),
+ firstEqualsName),
+ fields.end());
fields.append(qMakePair(name, data));
}