diff options
-rw-r--r-- | src/corelib/text/qbytearray.cpp | 4 | ||||
-rw-r--r-- | tests/auto/corelib/text/qbytearrayapisymmetry/tst_qbytearrayapisymmetry.cpp | 7 |
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> |