diff options
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp index 545f771d67a..6fb09b7ba7b 100644 --- a/TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp @@ -732,7 +732,7 @@ be_visitor_operation_cs::gen_marshal_and_invoke (be_operation *node, { *os << " ri.result ("; // get the return val - ctx = *this->ctx_; + /* ctx = *this->ctx_; ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_PRE_INVOKE_CS); ctx.sub_state (TAO_CodeGen::TAO_CDR_INPUT); visitor = tao_cg->make_visitor (&ctx); @@ -744,7 +744,17 @@ be_visitor_operation_cs::gen_marshal_and_invoke (be_operation *node, "gen_marshal_and_invoke - " "codegen for return var failed\n"), -1); + }*/ + if (bt->size_type () == be_decl::VARIABLE + || bt->base_node_type () == AST_Decl::NT_array) + { + *os << "_tao_safe_retval.in ();"; } + else + { + *os << "_tao_retval;"; + } + *os <<");" << be_nl; } |