summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/text/qstring.cpp2
-rw-r--r--tests/auto/corelib/text/qstring/tst_qstring.cpp11
2 files changed, 12 insertions, 1 deletions
diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp
index 091f44736e..dd00456fb2 100644
--- a/src/corelib/text/qstring.cpp
+++ b/src/corelib/text/qstring.cpp
@@ -3382,7 +3382,7 @@ QString& QString::replace(QChar ch, const QString &after, Qt::CaseSensitivity cs
replace_helper(indices, pos, 1, after.constData(), after.size());
- if (Q_LIKELY(index == -1)) // Nothing left to replace
+ if (Q_LIKELY(index == size())) // Nothing left to replace
break;
// The call to replace_helper just moved what index points at:
index += pos*(after.size() - 1);
diff --git a/tests/auto/corelib/text/qstring/tst_qstring.cpp b/tests/auto/corelib/text/qstring/tst_qstring.cpp
index 47470abd6f..e6d73c6ef1 100644
--- a/tests/auto/corelib/text/qstring/tst_qstring.cpp
+++ b/tests/auto/corelib/text/qstring/tst_qstring.cpp
@@ -2876,6 +2876,17 @@ void tst_QString::replace_string_extra()
s.replace( QString("BBB"), smallReplacement );
QCOMPARE( s, smallReplacement );
}
+
+ {
+ QString s(QLatin1String("BBB"));
+ QString expected(QLatin1String("BBB"));
+ for (int i = 0; i < 1028; ++i) {
+ s.append("X");
+ expected.append("GXU");
+ }
+ s.replace(QChar('X'), "GXU");
+ QCOMPARE(s, expected);
+ }
}
void tst_QString::replace_regexp()