summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/tools/qarraydata
diff options
context:
space:
mode:
authorJoão Abecasis <joao.abecasis@nokia.com>2012-01-06 14:38:57 +0100
committerQt by Nokia <qt-info@nokia.com>2012-01-11 11:41:24 +0100
commit5a92bc9760eb0bff73ac312850f81059f05eb5a9 (patch)
tree341ddb5274301f00963a2186c2fff9a27123487b /tests/auto/corelib/tools/qarraydata
parent25b8b2437ca4dc2d77ab985f491867bdbe2fff32 (diff)
Don't allocate when inserting overlapping data
(This is only for a test case, but still...) Change-Id: Ied205860e5469000249e15a5478c10db53f1fdaa Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
Diffstat (limited to 'tests/auto/corelib/tools/qarraydata')
-rw-r--r--tests/auto/corelib/tools/qarraydata/simplevector.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/tests/auto/corelib/tools/qarraydata/simplevector.h b/tests/auto/corelib/tools/qarraydata/simplevector.h
index e7032f0608..54c5fd2f61 100644
--- a/tests/auto/corelib/tools/qarraydata/simplevector.h
+++ b/tests/auto/corelib/tools/qarraydata/simplevector.h
@@ -237,11 +237,15 @@ public:
return;
}
- // Temporarily copy overlapping data, if needed
if ((first >= where && first < end)
|| (last > where && last <= end)) {
- SimpleVector tmp(first, last);
- d->insert(where, tmp.constBegin(), tmp.constEnd());
+ // Copy overlapping data first and only then shuffle it into place
+ T *start = d->begin() + position;
+ T *middle = d->end();
+
+ d->copyAppend(first, last);
+ std::rotate(start, middle, d->end());
+
return;
}