From 8befc4982a32752e48c82cacbed045e7336a3569 Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Mon, 16 May 2011 10:48:05 +0200 Subject: 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 --- src/corelib/tools/qlist.h | 2 ++ tests/auto/qlist/tst_qlist.cpp | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/corelib/tools/qlist.h b/src/corelib/tools/qlist.h index d30f8b1..97bf5fa 100644 --- a/src/corelib/tools/qlist.h +++ b/src/corelib/tools/qlist.h @@ -628,6 +628,8 @@ Q_OUTOFLINE_TEMPLATE QList QList::mid(int pos, int alength) const if (pos == 0 && alength == size()) return *this; QList 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 20d149a..001524c 100644 --- a/tests/auto/qlist/tst_qlist.cpp +++ b/tests/auto/qlist/tst_qlist.cpp @@ -198,6 +198,9 @@ void tst_QList::mid() const QCOMPARE(list.mid(3, 3), QList() << "bak" << "buck" << "hello"); + + QList list1; + QCOMPARE(list1.mid(1, 1).length(), 0); } void tst_QList::at() const -- cgit v0.12