summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Instance.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/Instance.cpp')
-rw-r--r--cpp/src/Ice/Instance.cpp49
1 files changed, 21 insertions, 28 deletions
diff --git a/cpp/src/Ice/Instance.cpp b/cpp/src/Ice/Instance.cpp
index 46e86c10b3e..d45c0b9e758 100644
--- a/cpp/src/Ice/Instance.cpp
+++ b/cpp/src/Ice/Instance.cpp
@@ -1012,31 +1012,6 @@ IceInternal::Instance::setDefaultRouter(const Ice::RouterPrx& defaultRouter)
}
void
-IceInternal::Instance::setStringConverter(const IceUtil::StringConverterPtr& stringConverter)
-{
- //
- // No locking, as it can only be called during plug-in loading
- //
- _stringConverter = stringConverter;
-}
-
-void
-IceInternal::Instance::setWstringConverter(const IceUtil::WstringConverterPtr& wstringConverter)
-{
- //
- // No locking, as it can only be called during plug-in loading
- //
- if(wstringConverter == 0)
- {
- _wstringConverter = new IceUtil::UnicodeWstringConverter;
- }
- else
- {
- _wstringConverter = wstringConverter;
- }
-}
-
-void
IceInternal::Instance::setLogger(const Ice::LoggerPtr& logger)
{
//
@@ -1360,11 +1335,14 @@ IceInternal::Instance::Instance(const CommunicatorPtr& communicator, const Initi
_retryQueue = new RetryQueue(this);
- if(_wstringConverter == 0)
+ //
+ // When _wstringConverter isn't set, use the default Unicode wstring converter
+ //
+ if(!_wstringConverter)
{
- _wstringConverter = new IceUtil::UnicodeWstringConverter();
+ _wstringConverter = new IceUtil::UnicodeWstringConverter;
}
-
+
__setNoDelete(false);
}
catch(...)
@@ -1434,6 +1412,21 @@ IceInternal::Instance::finishSetup(int& argc, char* argv[], const Ice::Communica
pluginManagerImpl->loadPlugins(argc, argv);
//
+ // Reset _stringConverter and _wstringConverter, in case a plugin changed them
+ //
+ _stringConverter = IceUtil::getProcessStringConverter();
+
+ IceUtil::WstringConverterPtr newWstringConverter = IceUtil::getProcessWstringConverter();
+ if(newWstringConverter)
+ {
+ _wstringConverter = newWstringConverter;
+ }
+ else if(!dynamic_cast<IceUtil::UnicodeWstringConverter*>(_wstringConverter.get()))
+ {
+ _wstringConverter = new IceUtil::UnicodeWstringConverter;
+ }
+
+ //
// Create Admin facets, if enabled.
//
// Note that any logger-dependent admin facet must be created after we load all plugins,