Avoid changes of d->cString for TQString::shared_null to make the value reliable.

This precedes unnecessary allocations, potential use after free and crashes.

Signed-off-by: Slávek Banko <slavek.banko@axis.cz>
(cherry picked from commit 93058fb0a3)
v3.5.13-sru
Slávek Banko 2 years ago
parent af8acc4fc3
commit 1bda8d37ec
No known key found for this signature in database
GPG Key ID: 608F5293A04BE668

@ -5724,6 +5724,14 @@ const char* QString::ascii() const
*/
QCString QString::utf8() const
{
if (!d->cString) {
d->cString = new QCString;
}
if(d == shared_null)
{
return *d->cString;
}
int l = length();
int rlen = l*3+1;
QCString rstr(rlen);
@ -5768,11 +5776,8 @@ QCString QString::utf8() const
++ch;
}
rstr.truncate( cursor - (uchar*)rstr.data() );
if (!d->cString) {
d->cString = new QCString;
}
*d->cString = rstr;
return rstr;
return *d->cString;
}
static QChar *addOne(QChar *qch, QString &str)
@ -5971,6 +5976,10 @@ QCString QString::local8Bit() const
if (!d->cString) {
d->cString = new QCString;
}
if(d == shared_null)
{
return *d->cString;
}
#ifdef QT_NO_TEXTCODEC
*d->cString = QCString(latin1());
return *d->cString;

Loading…
Cancel
Save