summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/corelib/tools/qstringlist.cpp2
-rw-r--r--tests/auto/qstringlist/tst_qstringlist.cpp10
2 files changed, 12 insertions, 0 deletions
diff --git a/src/corelib/tools/qstringlist.cpp b/src/corelib/tools/qstringlist.cpp
index e9bdf57282..32a0b1e211 100644
--- a/src/corelib/tools/qstringlist.cpp
+++ b/src/corelib/tools/qstringlist.cpp
@@ -414,6 +414,8 @@ QString QtPrivate::QStringList_join(const QStringList *that, const QString &sep)
totalLength += sep.size() * (size - 1);
QString res;
+ if (totalLength == 0)
+ return res;
res.reserve(totalLength);
for (int i = 0; i < that->size(); ++i) {
if (i)
diff --git a/tests/auto/qstringlist/tst_qstringlist.cpp b/tests/auto/qstringlist/tst_qstringlist.cpp
index 84293034ac..fb28bf45d1 100644
--- a/tests/auto/qstringlist/tst_qstringlist.cpp
+++ b/tests/auto/qstringlist/tst_qstringlist.cpp
@@ -77,6 +77,7 @@ private slots:
void streamingOperator();
void join() const;
void join_data() const;
+ void join_emptiness() const;
};
extern const char email[];
@@ -311,5 +312,14 @@ void tst_QStringList::join_data() const
<< QString("a b c");
}
+void tst_QStringList::join_emptiness() const
+{
+ QStringList list;
+ QString string = list.join(QString());
+
+ QCOMPARE(string.isEmpty(), true);
+ QCOMPARE(string.isNull(), true);
+}
+
QTEST_APPLESS_MAIN(tst_QStringList)
#include "tst_qstringlist.moc"