summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/text/qbytearray.cpp4
-rw-r--r--tests/auto/corelib/text/qbytearrayapisymmetry/tst_qbytearrayapisymmetry.cpp7
2 files changed, 9 insertions, 2 deletions
diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp
index c498aa30a6..cbcc4e48f7 100644
--- a/src/corelib/text/qbytearray.cpp
+++ b/src/corelib/text/qbytearray.cpp
@@ -2523,8 +2523,8 @@ qsizetype QtPrivate::count(QByteArrayView haystack, QByteArrayView needle) noexc
qsizetype num = 0;
qsizetype i = -1;
if (haystack.size() > 500 && needle.size() > 5) {
- QByteArrayMatcher matcher(needle.data());
- while ((i = matcher.indexIn(haystack.data(), i + 1)) != -1)
+ QByteArrayMatcher matcher(needle.data(), needle.size());
+ while ((i = matcher.indexIn(haystack.data(), haystack.size(), i + 1)) != -1)
++num;
} else {
while ((i = haystack.indexOf(needle, i + 1)) != -1)
diff --git a/tests/auto/corelib/text/qbytearrayapisymmetry/tst_qbytearrayapisymmetry.cpp b/tests/auto/corelib/text/qbytearrayapisymmetry/tst_qbytearrayapisymmetry.cpp
index 33fd25cb50..8b51727417 100644
--- a/tests/auto/corelib/text/qbytearrayapisymmetry/tst_qbytearrayapisymmetry.cpp
+++ b/tests/auto/corelib/text/qbytearrayapisymmetry/tst_qbytearrayapisymmetry.cpp
@@ -490,6 +490,13 @@ void tst_QByteArrayApiSymmetry::count_data()
QTest::addRow("aaa") << QByteArray("aaa") << QByteArray("a") << 3;
QTest::addRow("xyzaaaxyz") << QByteArray("xyzaaxyaxyz") << QByteArray("xyz") << 2;
+
+ const int len = 500;
+ QByteArray longData(len, 'a');
+ const QByteArray needle("abcdef");
+ longData.insert(0, needle);
+ longData.insert(len / 2, needle);
+ QTest::addRow("longInput") << longData << needle << 2;
}
template <typename Haystack, typename Needle>