tst_QStringConverter: compare pointer distances, not pointers
Strictly speaking, we did want to compare pointers, but char* are special with QCOMPARE in that the pointed-to strings are compared, not the pointers. So this wasn't doing what we wanted it to do. We could static_cast to void* to do it, but subtracting one from the other also gets us what we want, with simpler code. The drawback is that if appendToBuffer() ever returns nullptr, we'll print a huge number as the offset. Found by Valgrind: ==3769588== Conditional jump or move depends on uninitialised value(s) ==3769588== at 0x483FEDC: strcmp (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so) ==3769588== by 0x4C41EB6: qstrcmp(char const*, char const*) (in lib/libQt6Core.so.6.9.0) ==3769588== by 0x48975D8: QTest::compare_string_helper(char const*, char const*, char const*, char const*, char const*, int) (in lib/libQt6Test.so.6.9.0) ==3769588== by 0x12B12A: QTest::qCompare(char*, char*, char const*, char const*, char const*, int) (in tests/auto/corelib/text/qstringconverter/tst_qstringconverter) ==3769588== by 0x10EE94: tst_QStringConverter::invalidConverter() (in tests/auto/corelib/text/qstringconverter/tst_qstringconverter) Amends c46ee7df57c30c94107df8506d30d8872ffa3baa. Pick-to: 6.7 6.5 6.2 Fixes: QTBUG-126107 Change-Id: I44265a5eb67e47a59fc8fffd17d64051657af529 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> (cherry picked from commit 9d5611dc97979dab1932b07f8cfab367c3872d24) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
7b08477977
commit
ae44b283a9
@ -257,7 +257,7 @@ void tst_QStringConverter::invalidConverter()
|
||||
QVERIFY(!encoder.hasError());
|
||||
char buffer[100];
|
||||
char *position = encoder.appendToBuffer(buffer, u"Even more");
|
||||
QCOMPARE(position, buffer);
|
||||
QCOMPARE(position - buffer, 0);
|
||||
QVERIFY(encoder.hasError());
|
||||
}
|
||||
|
||||
@ -283,7 +283,7 @@ void tst_QStringConverter::invalidConverter()
|
||||
QVERIFY(!decoder.hasError());
|
||||
char16_t buffer[100];
|
||||
char16_t *position = decoder.appendToBuffer(buffer, "Even more");
|
||||
QCOMPARE(position, buffer);
|
||||
QCOMPARE(position - buffer, 0);
|
||||
QVERIFY(decoder.hasError());
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user