String API Symmetry: test for indexOf with large negative offset
Small change needed to make QString_char16 and QString_QChar return -1 in this case, but other combinations already returns -1. [ChangeLog][QtCore][Behavior Change] QString::indexOf(QChar) and QString::indexOf(char16_t) now treat a negative start-position, from, bigger than the string's size as invalid. It previously clipped such start-positions to the start of the string, inconsistently with other QString indexOf overloads. Change-Id: Ic56c8a558bf40a94845c649647db569892d4df02 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
This commit is contained in:
parent
e6457d9b60
commit
f9b867216b
@ -10157,6 +10157,8 @@ char16_t valueTypeToUtf16<char>(char t)
|
||||
|
||||
static inline qsizetype qFindChar(QStringView str, QChar ch, qsizetype from, Qt::CaseSensitivity cs) noexcept
|
||||
{
|
||||
if (-from > str.size())
|
||||
return -1;
|
||||
if (from < 0)
|
||||
from = qMax(from + str.size(), qsizetype(0));
|
||||
if (from < str.size()) {
|
||||
|
@ -2268,6 +2268,9 @@ void tst_QStringApiSymmetry::indexOf_data(bool rhsHasVariableLength)
|
||||
<< a << QLatin1String("a") << zeroPos << minus1Pos << minus1Pos;
|
||||
QTest::addRow("haystack: null, needle: a") << null << QLatin1String()
|
||||
<< a << QLatin1String("a") << zeroPos << minus1Pos << minus1Pos;
|
||||
QTest::addRow("haystack: anything, needle: a, large negative offset")
|
||||
<< "anything" << QLatin1String("anything") << a << QLatin1String("a") << qsizetype(-500)
|
||||
<< minus1Pos << minus1Pos;
|
||||
|
||||
#define ROW(h, n, st, cs, cis) \
|
||||
QTest::addRow("haystack: %s, needle: %s", #h, #n) << h << QLatin1String(#h) \
|
||||
|
@ -1710,7 +1710,7 @@ void tst_Collections::qstring()
|
||||
QVERIFY (hello.contains('e') != false);
|
||||
|
||||
QVERIFY(hello.indexOf('e') == 1);
|
||||
QVERIFY(hello.indexOf('e', -10) == 1);
|
||||
QVERIFY(hello.indexOf('e', -10) == -1);
|
||||
QVERIFY(hello.indexOf('l') == 2);
|
||||
QVERIFY(hello.indexOf('l',2) == 2);
|
||||
QVERIFY(hello.indexOf('l',3) == 3);
|
||||
|
Loading…
Reference in New Issue
Block a user