diff --git a/src/tools/qstring.cpp b/src/tools/qstring.cpp index 02d5cac..483efb9 100644 --- a/src/tools/qstring.cpp +++ b/src/tools/qstring.cpp @@ -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;