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>
bb10
Liang Qi 2011-05-16 10:48:05 +02:00 committed by Qt Continuous Integration System
parent d6c9916fd1
commit 40425ea53e
2 changed files with 5 additions and 0 deletions

View File

@ -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 {

View File

@ -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