Removed the "tst_QVector::outOfMemory" test.
The test is useless as we assert if the requested size exceeds a certain limit. We could, as an alternative, throw an exception, but in the end it's the caller's responsibility to ensure that the requested size is a sane value. Task-number: QTBUG-27285 Change-Id: I738950a6a2b51671a54e4d25c7e4c3ac0d7f63b8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>bb10
parent
2cce297b58
commit
0ed3cf2a1c
|
|
@ -70,7 +70,7 @@ int qFindByteArray(
|
|||
int qAllocMore(int alloc, int extra)
|
||||
{
|
||||
Q_ASSERT(alloc >= 0 && extra >= 0);
|
||||
Q_ASSERT(alloc < (1 << 30) - extra);
|
||||
Q_ASSERT_X(alloc < (1 << 30) - extra, "qAllocMore", "Requested size is too large!");
|
||||
|
||||
unsigned nalloc = alloc + extra;
|
||||
|
||||
|
|
|
|||
|
|
@ -250,7 +250,6 @@ private slots:
|
|||
|
||||
void testOperators() const;
|
||||
|
||||
void outOfMemory();
|
||||
void reserve();
|
||||
void reallocAfterCopy_data();
|
||||
void reallocAfterCopy();
|
||||
|
|
@ -1739,153 +1738,6 @@ struct Foo
|
|||
~Foo() { delete p; ++fooDtor; }
|
||||
};
|
||||
|
||||
void tst_QVector::outOfMemory()
|
||||
{
|
||||
fooCtor = 0;
|
||||
fooDtor = 0;
|
||||
|
||||
const int N = 0x7fffffff / sizeof(Foo);
|
||||
|
||||
{
|
||||
QVector<Foo> a;
|
||||
|
||||
QSKIP("QTBUG-27285 - This test crashes on many of our machines.");
|
||||
a.resize(N);
|
||||
if (a.size() == N) {
|
||||
QVERIFY(a.capacity() >= N);
|
||||
QCOMPARE(fooCtor, N);
|
||||
QCOMPARE(fooDtor, 0);
|
||||
|
||||
for (int i = 0; i < N; i += 35000)
|
||||
a[i] = Foo();
|
||||
} else {
|
||||
// this is the case we're actually testing
|
||||
QCOMPARE(a.size(), 0);
|
||||
QCOMPARE(a.capacity(), 0);
|
||||
QCOMPARE(fooCtor, 0);
|
||||
QCOMPARE(fooDtor, 0);
|
||||
|
||||
a.resize(5);
|
||||
QCOMPARE(a.size(), 5);
|
||||
QVERIFY(a.capacity() >= 5);
|
||||
QCOMPARE(fooCtor, 5);
|
||||
QCOMPARE(fooDtor, 0);
|
||||
|
||||
const int Prealloc = a.capacity();
|
||||
a.resize(Prealloc + 1);
|
||||
QCOMPARE(a.size(), Prealloc + 1);
|
||||
QVERIFY(a.capacity() >= Prealloc + 1);
|
||||
QCOMPARE(fooCtor, Prealloc + 6);
|
||||
QCOMPARE(fooDtor, 5);
|
||||
|
||||
a.resize(0x10000000);
|
||||
QCOMPARE(a.size(), 0);
|
||||
QCOMPARE(a.capacity(), 0);
|
||||
QCOMPARE(fooCtor, Prealloc + 6);
|
||||
QCOMPARE(fooDtor, Prealloc + 6);
|
||||
}
|
||||
}
|
||||
|
||||
fooCtor = 0;
|
||||
fooDtor = 0;
|
||||
|
||||
{
|
||||
QVector<Foo> a(N);
|
||||
if (a.size() == N) {
|
||||
QVERIFY(a.capacity() >= N);
|
||||
QCOMPARE(fooCtor, N);
|
||||
QCOMPARE(fooDtor, 0);
|
||||
|
||||
for (int i = 0; i < N; i += 35000)
|
||||
a[i] = Foo();
|
||||
} else {
|
||||
// this is the case we're actually testing
|
||||
QCOMPARE(a.size(), 0);
|
||||
QCOMPARE(a.capacity(), 0);
|
||||
QCOMPARE(fooCtor, 0);
|
||||
QCOMPARE(fooDtor, 0);
|
||||
}
|
||||
}
|
||||
|
||||
Foo foo;
|
||||
|
||||
fooCtor = 0;
|
||||
fooDtor = 0;
|
||||
|
||||
{
|
||||
QVector<Foo> a(N, foo);
|
||||
if (a.size() == N) {
|
||||
QVERIFY(a.capacity() >= N);
|
||||
QCOMPARE(fooCtor, N);
|
||||
QCOMPARE(fooDtor, 0);
|
||||
|
||||
for (int i = 0; i < N; i += 35000)
|
||||
a[i] = Foo();
|
||||
} else {
|
||||
// this is the case we're actually testing
|
||||
QCOMPARE(a.size(), 0);
|
||||
QCOMPARE(a.capacity(), 0);
|
||||
QCOMPARE(fooCtor, 0);
|
||||
QCOMPARE(fooDtor, 0);
|
||||
}
|
||||
}
|
||||
|
||||
fooCtor = 0;
|
||||
fooDtor = 0;
|
||||
|
||||
{
|
||||
QVector<Foo> a;
|
||||
a.resize(10);
|
||||
QCOMPARE(fooCtor, 10);
|
||||
QCOMPARE(fooDtor, 0);
|
||||
|
||||
QVector<Foo> b(a);
|
||||
QCOMPARE(fooCtor, 10);
|
||||
QCOMPARE(fooDtor, 0);
|
||||
|
||||
a.resize(N);
|
||||
if (a.size() == N) {
|
||||
QCOMPARE(fooCtor, N + 10);
|
||||
} else {
|
||||
QCOMPARE(a.size(), 0);
|
||||
QCOMPARE(a.capacity(), 0);
|
||||
QCOMPARE(fooCtor, 10);
|
||||
QCOMPARE(fooDtor, 0);
|
||||
|
||||
QCOMPARE(b.size(), 10);
|
||||
QVERIFY(b.capacity() >= 10);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
QVector<int> a;
|
||||
a.resize(10);
|
||||
|
||||
QVector<int> b(a);
|
||||
|
||||
a.resize(N);
|
||||
if (a.size() == N) {
|
||||
for (int i = 0; i < N; i += 60000)
|
||||
a[i] = i;
|
||||
} else {
|
||||
QCOMPARE(a.size(), 0);
|
||||
QCOMPARE(a.capacity(), 0);
|
||||
|
||||
QCOMPARE(b.size(), 10);
|
||||
QVERIFY(b.capacity() >= 10);
|
||||
}
|
||||
|
||||
b.resize(N - 1);
|
||||
if (b.size() == N - 1) {
|
||||
for (int i = 0; i < N - 1; i += 60000)
|
||||
b[i] = i;
|
||||
} else {
|
||||
QCOMPARE(b.size(), 0);
|
||||
QCOMPARE(b.capacity(), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QVector::reserve()
|
||||
{
|
||||
fooCtor = 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue