diff options
author | Liang Qi <liang.qi@nokia.com> | 2011-05-16 10:48:05 +0200 |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2011-05-27 11:06:52 +0200 |
commit | 40425ea53e2fafcfc3fe8357459da1a083660657 (patch) | |
tree | dbcda30362a84c13d693f621b2925a4807015b3e | |
parent | d6c9916fd157f0d3de5dbe17609177ee32e93488 (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.h | 2 | ||||
-rw-r--r-- | tests/auto/qlist/tst_qlist.cpp | 3 |
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 |