diff options
Diffstat (limited to 'TAO/tao/DynamicAny/DynSequence_i.cpp')
-rw-r--r-- | TAO/tao/DynamicAny/DynSequence_i.cpp | 38 |
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; } |