summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@nokia.com>2011-05-16 10:48:05 +0200
committerQt Continuous Integration System <qt-info@nokia.com>2011-05-27 11:06:52 +0200
commit40425ea53e2fafcfc3fe8357459da1a083660657 (patch)
treedbcda30362a84c13d693f621b2925a4807015b3e
parentd6c9916fd157f0d3de5dbe17609177ee32e93488 (diff)
Fix a regression in QList::mid()
It doesn't need to copy anything when pos is after size(). Task-number: QTBUG-19164 Reviewed-by: Oswald Buddenhagen (cherry picked from commit 8befc4982a32752e48c82cacbed045e7336a3569) Change-Id: Iccac75842616f0d41e457e844a15d1a3ccfeb642 Reviewed-on: http://codereview.qt.nokia.com/164 Reviewed-by: Liang Qi <liang.qi@nokia.com>
-rw-r--r--src/corelib/tools/qlist.h2
-rw-r--r--tests/auto/qlist/tst_qlist.cpp3
2 files changed, 5 insertions, 0 deletions
diff --git a/src/corelib/tools/qlist.h b/src/corelib/tools/qlist.h
index e6f041fe3c..4eb05d63b6 100644
--- a/src/corelib/tools/qlist.h
+++ b/src/corelib/tools/qlist.h
@@ -641,6 +641,8 @@ Q_OUTOFLINE_TEMPLATE QList<T> QList<T>::mid(int pos, int alength) const
if (pos == 0 && alength == size())
return *this;
QList<T> cpy;
+ if (alength <= 0)
+ return cpy;
cpy.reserve(alength);
cpy.d->end = alength;
QT_TRY {
diff --git a/tests/auto/qlist/tst_qlist.cpp b/tests/auto/qlist/tst_qlist.cpp
index 496f3d9170..3901b6ffe8 100644
--- a/tests/auto/qlist/tst_qlist.cpp
+++ b/tests/auto/qlist/tst_qlist.cpp
@@ -200,6 +200,9 @@ void tst_QList::mid() const
QCOMPARE(list.mid(3, 3),
QList<QString>() << "bak" << "buck" << "hello");
+
+ QList<int> list1;
+ QCOMPARE(list1.mid(1, 1).length(), 0);
}
void tst_QList::at() const