Fix converting a null QStringRef to QString
The assumption when calling QStringRef::toString() on a null QStringRef (i.e. when QStringRef::isNull() is true) is that QStringRef::toString().isNull() will also return true. With the current implementation we return a null QString() only when the QStringRef references a nullptr QString. We need to do the same also when QStringRef references a QString with null private data. Change-Id: I4177a5ea187ae758d7c46fe76a9d0583140e90cb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
06456873fc
commit
43c964b8ad
@ -10506,7 +10506,7 @@ ownership of it, no memory is freed when instances are destroyed.
|
||||
*/
|
||||
|
||||
QString QStringRef::toString() const {
|
||||
if (!m_string)
|
||||
if (isNull())
|
||||
return QString();
|
||||
if (m_size && m_position == 0 && m_size == m_string->size())
|
||||
return *m_string;
|
||||
|
@ -87,6 +87,7 @@ private slots:
|
||||
void mid();
|
||||
void split_data();
|
||||
void split();
|
||||
void nullToString();
|
||||
};
|
||||
|
||||
static QStringRef emptyRef()
|
||||
@ -2177,6 +2178,18 @@ void tst_QStringRef::split()
|
||||
}
|
||||
}
|
||||
|
||||
void tst_QStringRef::nullToString()
|
||||
{
|
||||
QStringRef nullRef;
|
||||
QVERIFY(nullRef.isNull());
|
||||
QVERIFY(nullRef.toString().isNull());
|
||||
|
||||
QString str;
|
||||
nullRef = &str;
|
||||
QVERIFY(nullRef.isNull());
|
||||
QVERIFY(nullRef.toString().isNull());
|
||||
}
|
||||
|
||||
QTEST_APPLESS_MAIN(tst_QStringRef)
|
||||
|
||||
#include "tst_qstringref.moc"
|
||||
|
Loading…
Reference in New Issue
Block a user