QStringBuilder: do not crash with null char*

This is supported by the others operator+

Change-Id: I9a1d1a0afb63acf32935948111d43ca6da370363
Reviewed-on: http://codereview.qt.nokia.com/764
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
Olivier Goffart 2011-06-27 13:09:23 +02:00 committed by Qt by Nokia
parent 8fb4beb2a1
commit 53a16752c2
3 changed files with 16 additions and 0 deletions

View File

@ -162,6 +162,8 @@ void QAbstractConcatenable::convertFromAscii(const char *a, int len, QChar *&out
}
#endif
if (len == -1) {
if (!a)
return;
while (*a)
*out++ = QLatin1Char(*a++);
} else {

View File

@ -352,6 +352,8 @@ template <> struct QConcatenable<const char *> : private QAbstractConcatenable
#endif
static inline void appendTo(const char *a, char *&out)
{
if (!a)
return;
while (*a)
*out++ = *a++;
}

View File

@ -133,6 +133,12 @@ void runScenario()
QCOMPARE(r, string);
r = string P ba;
QCOMPARE(r, string);
const char *zero = 0;
r = string P zero;
QCOMPARE(r, string);
r = zero P string;
QCOMPARE(r, string);
#endif
string = QString::fromLatin1(LITERAL);
@ -161,6 +167,12 @@ void runScenario()
QCOMPARE(r, r2);
r2 = QByteArray("hello\0") P UTF8_LITERAL;
QCOMPARE(r, r2);
const char *zero = 0;
r = ba P zero;
QCOMPARE(r, ba);
r = zero P ba;
QCOMPARE(r, ba);
}
//operator QString +=