summaryrefslogtreecommitdiff
path: root/TAO/tao/CodecFactory_ORBInitializer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/CodecFactory_ORBInitializer.cpp')
-rw-r--r--TAO/tao/CodecFactory_ORBInitializer.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/TAO/tao/CodecFactory_ORBInitializer.cpp b/TAO/tao/CodecFactory_ORBInitializer.cpp
index 1e386c94d55..236c04f8eb4 100644
--- a/TAO/tao/CodecFactory_ORBInitializer.cpp
+++ b/TAO/tao/CodecFactory_ORBInitializer.cpp
@@ -19,8 +19,23 @@ TAO_CodecFactory_ORBInitializer::pre_init (
// The CodecFactory is stateless and reentrant, so share a single
// instance between all ORBs.
+ if (CORBA::is_nil (this->codec_factory_.in ()))
+ {
+ IOP::CodecFactory_ptr codec_factory;
+ ACE_NEW_THROW_EX (codec_factory,
+ TAO_CodecFactory,
+ CORBA::NO_MEMORY (
+ CORBA::SystemException::_tao_minor_code (
+ TAO_DEFAULT_MINOR_CODE,
+ ENOMEM),
+ CORBA::COMPLETED_NO));
+ ACE_CHECK;
+
+ this->codec_factory_ = codec_factory;
+ }
+
info->register_initial_reference ("CodecFactory",
- &(this->codec_factory_),
+ this->codec_factory_.in (),
ACE_TRY_ENV);
ACE_CHECK;
}