summaryrefslogtreecommitdiffstats
path: root/src/corelib/codecs/qtextcodec.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/codecs/qtextcodec.cpp')
-rw-r--r--src/corelib/codecs/qtextcodec.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp
index bceead72f3..d2857c03b6 100644
--- a/src/corelib/codecs/qtextcodec.cpp
+++ b/src/corelib/codecs/qtextcodec.cpp
@@ -253,9 +253,10 @@ static QTextCodec *setupLocaleMapper()
// textCodecsMutex need to be locked to enter this function
static void setup()
{
- QCoreGlobalData *globalData = QCoreGlobalData::instance();
- if (!globalData->allCodecs.isEmpty())
+ static bool initialized = false;
+ if (initialized)
return;
+ initialized = true;
#if !defined(QT_NO_CODECS) && !defined(QT_BOOTSTRAPPED)
(void)new QTsciiCodec;
@@ -465,7 +466,11 @@ QTextCodec::QTextCodec()
{
QMutexLocker locker(textCodecsMutex());
- QCoreGlobalData::instance()->allCodecs.prepend(this);
+ QCoreGlobalData *globalInstance = QCoreGlobalData::instance();
+ if (globalInstance->allCodecs.isEmpty())
+ setup();
+
+ globalInstance->allCodecs.prepend(this);
}