From c67efb6506b16608921208c9f45a65abb97de029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Abecasis?= Date: Wed, 7 Mar 2012 14:09:45 +0100 Subject: Fix invalid read, detected by valgrind Commit 3fe1eed0 changed the QVERIFY in line 1354 to QCOMPARE. This was done to work around a (not yet understood) compiler issue. That however was wrong, as char pointers in QCOMPARE are assumed to point to '\0'-terminated strings and will get dereferenced. In this case the intent was to compare the actual pointer values, as the pointers point past the end of the array and should not be dereferenced. Explicitly casting to (void *) and using QCOMPARE will not only keep the intent, it will hopefully also provide meaningful output on failures. As such the fix was applied throughout the test. Change-Id: Ib0968df492ccc11d7c391bb69037cd7241e55493 Reviewed-by: Robin Burchell --- .../auto/corelib/tools/qarraydata/tst_qarraydata.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'tests/auto') diff --git a/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp b/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp index 7ea91bc538..9bfbac0017 100644 --- a/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp +++ b/tests/auto/corelib/tools/qarraydata/tst_qarraydata.cpp @@ -314,11 +314,11 @@ void tst_QArrayData::simpleVector() QVERIFY(!v1.isSharedWith(v5)); QVERIFY(!v1.isSharedWith(v6)); - QVERIFY(v1.constBegin() == v1.constEnd()); - QVERIFY(v4.constBegin() == v4.constEnd()); - QVERIFY(v6.constBegin() + v6.size() == v6.constEnd()); - QVERIFY(v7.constBegin() + v7.size() == v7.constEnd()); - QVERIFY(v8.constBegin() + v8.size() == v8.constEnd()); + QCOMPARE((void *)v1.constBegin(), (void *)v1.constEnd()); + QCOMPARE((void *)v4.constBegin(), (void *)v4.constEnd()); + QCOMPARE((void *)(v6.constBegin() + v6.size()), (void *)v6.constEnd()); + QCOMPARE((void *)(v7.constBegin() + v7.size()), (void *)v7.constEnd()); + QCOMPARE((void *)(v8.constBegin() + v8.size()), (void *)v8.constEnd()); QVERIFY(v1 == v2); QVERIFY(v1 == v3); @@ -1216,7 +1216,7 @@ void tst_QArrayData::fromRawData() QCOMPARE(raw.size(), size_t(11)); QCOMPARE(raw.constBegin(), array); - QCOMPARE(raw.constEnd(), array + sizeof(array)/sizeof(array[0])); + QCOMPARE((void *)raw.constEnd(), (void *)(array + sizeof(array)/sizeof(array[0]))); QVERIFY(!raw.isShared()); QVERIFY(SimpleVector(raw).isSharedWith(raw)); @@ -1234,7 +1234,7 @@ void tst_QArrayData::fromRawData() QCOMPARE(raw.size(), size_t(11)); QCOMPARE(raw.constBegin(), array); - QCOMPARE(raw.constEnd(), array + sizeof(array)/sizeof(array[0])); + QCOMPARE((void *)raw.constEnd(), (void *)(array + sizeof(array)/sizeof(array[0]))); SimpleVector copy(raw); QVERIFY(!copy.isSharedWith(raw)); @@ -1247,7 +1247,7 @@ void tst_QArrayData::fromRawData() QCOMPARE(raw.size(), size_t(11)); QCOMPARE(raw.constBegin(), array); - QCOMPARE(raw.constEnd(), array + sizeof(array)/sizeof(array[0])); + QCOMPARE((void *)raw.constEnd(), (void *)(array + sizeof(array)/sizeof(array[0]))); // Detach QCOMPARE(raw.back(), 11); @@ -1286,7 +1286,7 @@ void tst_QArrayData::literals() #endif QVERIFY(v.isSharable()); - QCOMPARE(v.constBegin() + v.size(), v.constEnd()); + QCOMPARE((void *)(v.constBegin() + v.size()), (void *)v.constEnd()); for (int i = 0; i < 10; ++i) QCOMPARE(const_(v)[i], char('A' + i)); @@ -1335,7 +1335,7 @@ void tst_QArrayData::variadicLiterals() QVERIFY(v.isStatic()); QVERIFY(v.isSharable()); - QVERIFY(v.constBegin() + v.size() == v.constEnd()); + QCOMPARE((void *)(v.constBegin() + v.size()), (void *)v.constEnd()); for (int i = 0; i < 7; ++i) QCOMPARE(const_(v)[i], i); -- cgit v1.2.3