summaryrefslogtreecommitdiff
path: root/TAO/tao/DynamicAny/DynSequence_i.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/DynamicAny/DynSequence_i.cpp')
-rw-r--r--TAO/tao/DynamicAny/DynSequence_i.cpp38
1 files changed, 24 insertions, 14 deletions
diff --git a/TAO/tao/DynamicAny/DynSequence_i.cpp b/TAO/tao/DynamicAny/DynSequence_i.cpp
index 731e6a98d16..e7b68f0fbff 100644
--- a/TAO/tao/DynamicAny/DynSequence_i.cpp
+++ b/TAO/tao/DynamicAny/DynSequence_i.cpp
@@ -70,11 +70,13 @@ TAO_DynSequence_i::init (const CORBA::Any& any
for (CORBA::ULong i = 0; i < length; ++i)
{
- // This Any constructor is a TAO extension.
- CORBA::Any field_any (field_tc.in (),
- 0,
- cdr.byte_order (),
- cdr.start ());
+ CORBA::Any field_any;
+ TAO::Unknown_IDL_Type *unk = 0;
+ ACE_NEW (unk,
+ TAO::Unknown_IDL_Type (field_tc.in (),
+ cdr.start (),
+ cdr.byte_order ()));
+ field_any.replace (unk);
// This recursive step will call the correct constructor
// based on the type of field_any.
@@ -586,11 +588,13 @@ TAO_DynSequence_i::from_any (const CORBA::Any & any
for (CORBA::ULong i = 0; i < arg_length; ++i)
{
- // This Any constructor is a TAO extension.
- CORBA::Any field_any (field_tc.in (),
- 0,
- cdr.byte_order (),
- cdr.start ());
+ CORBA::Any field_any;
+ TAO::Unknown_IDL_Type *unk = 0;
+ ACE_NEW (unk,
+ TAO::Unknown_IDL_Type (field_tc.in (),
+ cdr.start (),
+ cdr.byte_order ()));
+ field_any.replace (unk);
if (i < this->component_count_)
{
@@ -676,13 +680,19 @@ TAO_DynSequence_i::to_any (ACE_ENV_SINGLE_ARG_DECL)
CORBA::Any_ptr retval = 0;
ACE_NEW_THROW_EX (retval,
- CORBA::Any (this->type_.in (),
- 0,
- in_cdr.byte_order (),
- in_cdr.start ()),
+ CORBA::Any,
CORBA::NO_MEMORY ());
ACE_CHECK_RETURN (0);
+ TAO::Unknown_IDL_Type *unk = 0;
+ ACE_NEW_THROW_EX (unk,
+ TAO::Unknown_IDL_Type (this->type_.in (),
+ in_cdr.start (),
+ in_cdr.byte_order ()),
+ CORBA::NO_MEMORY ());
+ ACE_CHECK_RETURN (0);
+
+ retval->replace (unk);
return retval;
}