Fix QString::operator=(QLatin1String) for substrings
QLatin1String now has a constructor that takes explicit length, which makes it possible to create a QLatin1String that isn't null-terminated. Made QString::operator=(QLatin1String) work in that case. Change-Id: Ie77eabd2f8f036531d67cd8051a7b6305b386ccf Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
This commit is contained in:
parent
7edd623957
commit
4b1ba7c792
@ -711,7 +711,7 @@ inline bool QString::isDetached() const
|
||||
{ return d->ref == 1; }
|
||||
inline QString &QString::operator=(const QLatin1String &s)
|
||||
{
|
||||
*this = fromLatin1(s.latin1());
|
||||
*this = fromLatin1(s.latin1(), s.size());
|
||||
return *this;
|
||||
}
|
||||
inline void QString::clear()
|
||||
|
@ -224,6 +224,7 @@ private slots:
|
||||
void operatorGreaterWithQLatin1String();
|
||||
void compareQLatin1Strings();
|
||||
void fromQLatin1StringWithLength();
|
||||
void assignQLatin1String();
|
||||
};
|
||||
|
||||
typedef QList<int> IntList;
|
||||
@ -5286,6 +5287,28 @@ void tst_QString::fromQLatin1StringWithLength()
|
||||
QCOMPARE(foo, QString::fromLatin1("foo"));
|
||||
}
|
||||
|
||||
void tst_QString::assignQLatin1String()
|
||||
{
|
||||
QString empty = QLatin1String("");
|
||||
QVERIFY(empty.isEmpty());
|
||||
QVERIFY(!empty.isNull());
|
||||
|
||||
QString null = QLatin1String(0);
|
||||
QVERIFY(null.isEmpty());
|
||||
QVERIFY(null.isNull());
|
||||
|
||||
QLatin1String latin1foo("foo");
|
||||
QString foo = latin1foo;
|
||||
QCOMPARE(foo.size(), latin1foo.size());
|
||||
QCOMPARE(foo, QString::fromLatin1("foo"));
|
||||
|
||||
QLatin1String latin1subfoo("foobar", 3);
|
||||
foo = latin1subfoo;
|
||||
QCOMPARE(foo.size(), latin1subfoo.size());
|
||||
QCOMPARE(foo, QString::fromLatin1("foo"));
|
||||
|
||||
}
|
||||
|
||||
QTEST_APPLESS_MAIN(tst_QString)
|
||||
|
||||
#include "tst_qstring.moc"
|
||||
|
Loading…
Reference in New Issue
Block a user