diff options
Diffstat (limited to 'TAO/tao/DynamicInterface/DII_Arguments.cpp')
-rw-r--r-- | TAO/tao/DynamicInterface/DII_Arguments.cpp | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/TAO/tao/DynamicInterface/DII_Arguments.cpp b/TAO/tao/DynamicInterface/DII_Arguments.cpp index 210626bc3a2..18f9ca7e9d8 100644 --- a/TAO/tao/DynamicInterface/DII_Arguments.cpp +++ b/TAO/tao/DynamicInterface/DII_Arguments.cpp @@ -22,7 +22,8 @@ namespace TAO CORBA::Boolean NamedValue_Argument::demarshal (TAO_InputCDR &cdr) { - ACE_TRY_NEW_ENV + ACE_DECLARE_NEW_CORBA_ENV; + ACE_TRY { if (this->x_ !=0 && this->x_->value ()->impl ()) { @@ -36,6 +37,7 @@ namespace TAO return 0; } ACE_ENDTRY; + ACE_CHECK_RETURN (false); this->byte_order_ = cdr.byte_order (); @@ -53,7 +55,8 @@ namespace TAO CORBA::Boolean NVList_Argument::marshal (TAO_OutputCDR &cdr) { - ACE_TRY_NEW_ENV + ACE_DECLARE_NEW_CORBA_ENV; + ACE_TRY { this->x_->_tao_encode (cdr, CORBA::ARG_IN | CORBA::ARG_INOUT @@ -65,6 +68,7 @@ namespace TAO return 0; } ACE_ENDTRY; + ACE_CHECK_RETURN (false); return 1; } @@ -73,8 +77,8 @@ namespace TAO NVList_Argument::demarshal (TAO_InputCDR &cdr) { - - ACE_TRY_NEW_ENV + ACE_DECLARE_NEW_CORBA_ENV; + ACE_TRY { // Now, get all the "return", "out", and "inout" parameters // from the response message body ... return parameter is @@ -94,35 +98,40 @@ namespace TAO return 0; } ACE_ENDTRY; + ACE_CHECK_RETURN (false); return 1; } void - NVList_Argument::interceptor_paramlist (Dynamic::ParameterList *list) + NVList_Argument::interceptor_paramlist (Dynamic::ParameterList *lst) { const CORBA::ULong len = this->x_->count (); - list->length (len); + lst->length (len); for (CORBA::ULong i = 0; i < len; ++i) { - (*list)[i].argument <<= *this->x_->item (i)->value (); + if (!this->x_->item (i)->value ()) + return; + + (*lst)[i].argument.replace ( + this->x_->item (i)->value ()->impl ()); switch (this->x_->item (i)->flags ()) { case CORBA::ARG_IN: { - (*list)[i].mode = CORBA::PARAM_IN; + (*lst)[i].mode = CORBA::PARAM_IN; break; } case CORBA::ARG_INOUT: { - (*list)[i].mode = CORBA::PARAM_INOUT; + (*lst)[i].mode = CORBA::PARAM_INOUT; break; } case CORBA::ARG_OUT: { - (*list)[i].mode = CORBA::PARAM_OUT; + (*lst)[i].mode = CORBA::PARAM_OUT; break; } default: |