diff options
author | Lars Knoll <lars.knoll@qt.io> | 2020-10-30 13:42:09 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2020-11-04 11:21:37 +0100 |
commit | 32a703e2779e697a9a7d75f6cbc6e555187d7fca (patch) | |
tree | ea9d56952efd13d36ae455771ace6fa144bbe568 /tests | |
parent | 50ec3252ac5d61a13fab01801ef42729d6f3a7c6 (diff) |
Don't move data in QArrayDataOps::reallocate()
reallocate() should only ever call realloc(), and only be used to
create more space at the end of the data.
Change-Id: I2ac4dbc90d2afaa571bb620108d7984356712cb2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp | 49 |
1 files changed, 0 insertions, 49 deletions
diff --git a/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp b/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp index 497f582c10..5910a29b43 100644 --- a/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp +++ b/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp @@ -82,8 +82,6 @@ private slots: void freeSpace(); void dataPointerAllocate_data() { arrayOps_data(); } void dataPointerAllocate(); - void dataPointerAllocateAlignedWithReallocate_data(); - void dataPointerAllocateAlignedWithReallocate(); #ifndef QT_NO_EXCEPTIONS void exceptionSafetyPrimitives_constructor(); void exceptionSafetyPrimitives_destructor(); @@ -2158,53 +2156,6 @@ void tst_QArrayData::dataPointerAllocate() } } -void tst_QArrayData::dataPointerAllocateAlignedWithReallocate_data() -{ - QTest::addColumn<QArrayData::ArrayOptions>("initFlags"); - QTest::addColumn<QArrayData::ArrayOptions>("newFlags"); - - QTest::newRow("default-flags") << QArrayData::ArrayOptions(QArrayData::DefaultAllocationFlags) - << QArrayData::ArrayOptions(QArrayData::DefaultAllocationFlags); - QTest::newRow("no-grows-backwards") << QArrayData::ArrayOptions(QArrayData::GrowsForward) - << QArrayData::ArrayOptions(QArrayData::GrowsForward); - QTest::newRow("grows-backwards") << QArrayData::ArrayOptions(QArrayData::GrowsBackwards) - << QArrayData::ArrayOptions(QArrayData::GrowsBackwards); - QTest::newRow("removed-grows-backwards") << QArrayData::ArrayOptions(QArrayData::GrowsBackwards) - << QArrayData::ArrayOptions(QArrayData::GrowsForward); - QTest::newRow("removed-growth") << QArrayData::ArrayOptions(QArrayData::GrowsBackwards) - << QArrayData::ArrayOptions(QArrayData::DefaultAllocationFlags); -} - -void tst_QArrayData::dataPointerAllocateAlignedWithReallocate() -{ - QFETCH(QArrayData::ArrayOptions, initFlags); - QFETCH(QArrayData::ArrayOptions, newFlags); - - // Note: using the same type to ensure alignment and padding are the same. - // otherwise, we may get differences in the allocated size - auto a = QArrayDataPointer<int>::allocateGrow(QArrayDataPointer<int>(), 50, 0, initFlags); - auto b = QArrayDataPointer<int>::allocateGrow(QArrayDataPointer<int>(), 50, 0, initFlags); - - if (initFlags & QArrayData::GrowsBackwards) { - QVERIFY(a.freeSpaceAtBegin() > 0); - } else { - QVERIFY(a.freeSpaceAtBegin() == 0); - } - QCOMPARE(a.freeSpaceAtBegin(), b.freeSpaceAtBegin()); - const auto oldSpaceAtBeginA = a.freeSpaceAtBegin(); - - a->reallocate(100, newFlags); - b = QArrayDataPointer<int>::allocateGrow(b, 100, b.size, newFlags); - - // NB: when growing backwards, the behavior is not aligned - if (!(newFlags & QArrayData::GrowsBackwards)) { - QCOMPARE(a.freeSpaceAtBegin(), b.freeSpaceAtBegin()); - } else { - QCOMPARE(a.freeSpaceAtBegin(), oldSpaceAtBeginA); - QCOMPARE(b.freeSpaceAtBegin(), b.constAllocatedCapacity() / 2); - } -} - #ifndef QT_NO_EXCEPTIONS struct ThrowingTypeWatcher { |