diff options
Diffstat (limited to 'src/tools/qstring.cpp')
-rw-r--r-- | src/tools/qstring.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/tools/qstring.cpp b/src/tools/qstring.cpp index 24b8164..8d52468 100644 --- a/src/tools/qstring.cpp +++ b/src/tools/qstring.cpp @@ -5768,6 +5768,10 @@ QCString QString::utf8() const ++ch; } rstr.truncate( cursor - (uchar*)rstr.data() ); + if (!d->cString) { + d->cString = new QCString; + } + *d->cString = rstr; return rstr; } @@ -5964,23 +5968,28 @@ QString QString::fromLatin1( const char* chars, int len ) QCString QString::local8Bit() const { + if (!d->cString) { + d->cString = new QCString; + } #ifdef QT_NO_TEXTCODEC - return latin1(); + *d->cString = QCString(latin1()); + return *d->cString; #else #ifdef Q_WS_X11 QTextCodec* codec = QTextCodec::codecForLocale(); - return codec - ? codec->fromUnicode(*this) - : QCString(latin1()); + *d->cString = codec ? codec->fromUnicode(*this) : QCString(latin1()); + return *d->cString; #endif #if defined( Q_WS_MACX ) return utf8(); #endif #if defined( Q_WS_MAC9 ) - return QCString(latin1()); //I'm evil.. + *d->cString = QCString(latin1()); //I'm evil.. + return *d->cString; #endif #ifdef Q_WS_WIN - return isNull() ? QCString("") : qt_winQString2MB( *this ); + *d->cString = isNull() ? QCString("") : qt_winQString2MB( *this ); + return *d->cString; #endif #ifdef Q_WS_QWS return utf8(); // ### if there is any 8 bit format supported? |