- static map<string, IconvProcessor> processors;
- if (processors.find(encoding) == processors.end()) {
- IconvProcessor processor(ucs4_codeset, encoding.c_str());
- processors.insert(make_pair(encoding, processor));
- }
- return iconv_convert<char_type>(processors[encoding], s, ls);
+ static QThreadStorage<map<string, IconvProcessor> *> static_processors;
+ if (!static_processors.hasLocalData())
+ static_processors.setLocalData(new map<string, IconvProcessor>);
+ map<string, IconvProcessor> & processors = *static_processors.localData();
+ IconvProcessor & processor = getProc(processors, encoding, true);
+ return iconv_convert<char_type>(processor, s, ls);
+}
+
+
+namespace {
+
+map<string, IconvProcessor> & ucs4To8bitProcessors()
+{
+ static QThreadStorage<map<string, IconvProcessor> *> processors;
+ if (!processors.hasLocalData())
+ processors.setLocalData(new map<string, IconvProcessor>);
+ return *processors.localData();