summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-08-20 00:56:28 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1999-08-20 00:56:28 +0000
commita38a2d45bd7561a3cd6fcaa64df3d11a0751eb70 (patch)
treebf013f9457bc5dd51ca39ac91cef7bf8194d4f1f /TAO/TAO_IDL
parent4686beac1824d2f815b8a0c4c6b12b258449acbb (diff)
downloadATCD-a38a2d45bd7561a3cd6fcaa64df3d11a0751eb70.tar.gz
Return values that are heap-allocated in the stub do not now
leak memory in case of an exception during invocation or demarshaling.
Diffstat (limited to 'TAO/TAO_IDL')
-rw-r--r--TAO/TAO_IDL/be/be_visitor_argument/pre_docall_cs.cpp93
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/ami_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp35
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/operation_ami_cs.cpp6
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp72
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/rettype_post_docall_cs.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/rettype_pre_docall_cs.cpp17
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp26
-rw-r--r--TAO/TAO_IDL/be/be_visitor_operation/thru_poa_collocated_ss.cpp8
10 files changed, 71 insertions, 192 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_argument/pre_docall_cs.cpp b/TAO/TAO_IDL/be/be_visitor_argument/pre_docall_cs.cpp
index c1e594bed31..6f163bccd0c 100644
--- a/TAO/TAO_IDL/be/be_visitor_argument/pre_docall_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_argument/pre_docall_cs.cpp
@@ -110,24 +110,10 @@ be_visitor_args_pre_docall_cs::visit_array (be_array *node)
if (node->size_type () == be_decl::VARIABLE)
{
os->indent ();
-#if 0 /* ASG */
- *os << bt->name () << "_slice *&_tao_base_" << arg->local_name ()
- << " = " << arg->local_name () << ".ptr ();" << be_nl;
- if (!this->void_return_type ())
- {
- *os << "ACE_ALLOCATOR_RETURN (_tao_base_" << arg->local_name ()
- << ", " << bt->name () << "_alloc (), _tao_retval);\n";
- }
- else
- {
- *os << "ACE_ALLOCATOR (_tao_base_" << arg->local_name ()
- << ", " << bt->name () << "_alloc ());\n";
- }
-#endif
if (!this->void_return_type ())
{
*os << "ACE_ALLOCATOR_RETURN (" << arg->local_name ()
- << ".ptr (), " << bt->name () << "_alloc (), _tao_retval);\n";
+ << ".ptr (), " << bt->name () << "_alloc (), 0);\n";
}
else
{
@@ -200,14 +186,6 @@ be_visitor_args_pre_docall_cs::visit_predefined_type (be_predefined_type *node)
// get the argument node
be_argument *arg = this->ctx_->be_node_as_argument ();
-#if 0
- // if the current type is an alias, use that
- be_type *bt;
- if (this->ctx_->alias ())
- bt = this->ctx_->alias ();
- else
- bt = node;
-#endif
// pre do_static_call processing is valid only for pseudo objects and for Any
switch (node->pt ())
@@ -217,11 +195,6 @@ be_visitor_args_pre_docall_cs::visit_predefined_type (be_predefined_type *node)
switch (this->direction ())
{
case AST_Argument::dir_OUT:
-#if 0
- os->indent ();
- *os << bt->name () << "_ptr &_tao_base_" << arg->local_name ()
- << " = " << arg->local_name () << ".ptr ();\n";
-#endif
break;
default:
break;
@@ -234,24 +207,10 @@ be_visitor_args_pre_docall_cs::visit_predefined_type (be_predefined_type *node)
{
case AST_Argument::dir_OUT:
os->indent ();
-#if 0 /* ASG */
- *os << bt->name () << " *&_tao_base_" << arg->local_name ()
- << " = " << arg->local_name () << ".ptr ();" << be_nl;
- if (!this->void_return_type ())
- {
- *os << "ACE_NEW_RETURN (_tao_base_" << arg->local_name ()
- << ", CORBA::Any, _tao_retval);\n";
- }
- else
- {
- *os << "ACE_NEW (_tao_base_" << arg->local_name ()
- << ", CORBA::Any);\n";
- }
-#endif
if (!this->void_return_type ())
{
*os << "ACE_NEW_RETURN (" << arg->local_name ()
- << ".ptr (), CORBA::Any, _tao_retval);\n";
+ << ".ptr (), CORBA::Any, 0);\n";
}
else
{
@@ -288,24 +247,10 @@ be_visitor_args_pre_docall_cs::visit_sequence (be_sequence *node)
case AST_Argument::dir_OUT:
// caller must have allocated the pointer
os->indent ();
-#if 0 /* ASG */
- *os << bt->name () << " *&_tao_base_" << arg->local_name ()
- << " = " << arg->local_name () << ".ptr ();" << be_nl;
- if (!this->void_return_type ())
- {
- *os << "ACE_NEW_RETURN (_tao_base_" << arg->local_name ()
- << ", " << bt->name () << ", _tao_retval);\n";
- }
- else
- {
- *os << "ACE_NEW (_tao_base_" << arg->local_name ()
- << ", " << bt->name () << ");\n";
- }
-#endif
if (!this->void_return_type ())
{
*os << "ACE_NEW_RETURN (" << arg->local_name ()
- << ".ptr (), " << bt->name () << ", _tao_retval);\n";
+ << ".ptr (), " << bt->name () << ", 0);\n";
}
else
{
@@ -345,24 +290,10 @@ be_visitor_args_pre_docall_cs::visit_structure (be_structure *node)
case AST_Argument::dir_OUT:
// caller must have allocated the pointer
os->indent ();
-#if 0 /* ASG */
- *os << bt->name () << " *&_tao_base_" << arg->local_name ()
- << " = " << arg->local_name () << ".ptr ();" << be_nl;
- if (!this->void_return_type ())
- {
- *os << "ACE_NEW_RETURN (_tao_base_" << arg->local_name ()
- << ", " << bt->name () << ", _tao_retval);\n";
- }
- else
- {
- *os << "ACE_NEW (_tao_base_" << arg->local_name ()
- << ", " << bt->name () << ");\n";
- }
-#endif
if (!this->void_return_type ())
{
*os << "ACE_NEW_RETURN (" << arg->local_name ()
- << ".ptr (), " << bt->name () << ", _tao_retval);\n";
+ << ".ptr (), " << bt->name () << ", 0);\n";
}
else
{
@@ -396,24 +327,10 @@ be_visitor_args_pre_docall_cs::visit_union (be_union *node)
{
case AST_Argument::dir_OUT:
os->indent ();
-#if 0 /* ASG */
- *os << bt->name () << " *&_tao_base_" << arg->local_name ()
- << " = " << arg->local_name () << ".ptr ();" << be_nl;
- if (!this->void_return_type ())
- {
- *os << "ACE_NEW_RETURN (_tao_base_" << arg->local_name ()
- << ", " << bt->name () << ", _tao_retval);\n";
- }
- else
- {
- *os << "ACE_NEW (_tao_base_" << arg->local_name ()
- << ", " << bt->name () << ");\n";
- }
-#endif
if (!this->void_return_type ())
{
*os << "ACE_NEW_RETURN (" << arg->local_name ()
- << ".ptr (), " << bt->name () << ", _tao_retval);\n";
+ << ".ptr (), " << bt->name () << ", 0);\n";
}
else
{
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_cs.cpp
index 37d859136ef..4a46c106c85 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/ami_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_cs.cpp
@@ -772,8 +772,6 @@ be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation *node
*os << be_nl
<< "if (_invoke_status == TAO_INVOKE_RESTART)" << be_idt_nl
<< "continue;" << be_uidt_nl
- << "// if (_invoke_status == TAO_INVOKE_EXCEPTION)" << be_idt_nl
- << "// cannot happen" << be_uidt_nl
<< "if (_invoke_status != TAO_INVOKE_OK)" << be_nl
<< "{" << be_idt_nl;
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp
index d98be024263..f58cf14e9d1 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/ami_handler_operation_cs.cpp
@@ -788,8 +788,6 @@ gen_marshal_and_invoke (be_operation *node,
*os << be_nl
<< "if (_invoke_status == TAO_INVOKE_RESTART)" << be_idt_nl
<< "continue;" << be_uidt_nl
- << "// if (_invoke_status == TAO_INVOKE_EXCEPTION)" << be_idt_nl
- << "// cannot happen" << be_uidt_nl
<< "if (_invoke_status != TAO_INVOKE_OK)" << be_nl
<< "{" << be_idt_nl;
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp b/TAO/TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp
index da1a5d88875..1861f81be63 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/compiled_marshal.cpp
@@ -120,22 +120,11 @@ int be_visitor_operation_rettype_compiled_marshal::visit_array (be_array *)
if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT)
{
-#if 0
- *os << node->name () << "_forany (";
- if (node->size_type () == be_decl::VARIABLE)
- *os << "(" << node->name () << "_slice *)"
- << "_tao_retval.in ()" << ")";
- else
- *os << "_tao_retval" << ")";
-#else
*os << "_tao_retval_forany";
-#endif
}
else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
{
*os << "_tao_retval_forany";
- // *os << node->name () << "_forany ("
- // << "_tao_retval" << ")";
}
else
{
@@ -181,7 +170,7 @@ int be_visitor_operation_rettype_compiled_marshal::visit_interface (be_interface
}
else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
{
- *os << "_tao_retval";
+ *os << "_tao_retval.inout ()";
}
else
{
@@ -204,7 +193,7 @@ int be_visitor_operation_rettype_compiled_marshal::visit_interface_fwd (be_inter
}
else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
{
- *os << "_tao_retval";
+ *os << "_tao_retval.inout ()";
}
else
{
@@ -229,7 +218,7 @@ int be_visitor_operation_rettype_compiled_marshal::visit_valuetype (be_valuetype
}
else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
{
- *os << "_tao_retval";
+ *os << "_tao_retval.inout ()";
}
else
{
@@ -252,7 +241,7 @@ int be_visitor_operation_rettype_compiled_marshal::visit_valuetype_fwd (be_value
}
else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
{
- *os << "_tao_retval";
+ *os << "_tao_retval.inout ()";
}
else
{
@@ -317,10 +306,10 @@ int be_visitor_operation_rettype_compiled_marshal::visit_predefined_type (be_pre
switch (node->pt ())
{
case AST_PredefinedType::PT_pseudo:
- *os << "_tao_retval";
+ *os << "_tao_retval.inout ()";
break;
case AST_PredefinedType::PT_any:
- *os << "*_tao_retval";
+ *os << "_tao_retval.inout ()";
break;
case AST_PredefinedType::PT_long:
case AST_PredefinedType::PT_ulong:
@@ -374,7 +363,7 @@ int be_visitor_operation_rettype_compiled_marshal::visit_sequence (be_sequence *
}
else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
{
- *os << "*_tao_retval";
+ *os << "_tao_retval.inout ()";
}
else
{
@@ -418,17 +407,17 @@ int be_visitor_operation_rettype_compiled_marshal::visit_string (be_string *node
if (node->max_size ()->ev ()->u.ulval == 0)
{
// unbounded
- *os << "_tao_retval";
+ *os << "_tao_retval.inout ()";
}
else
{
if (node->width () == sizeof (char))
{
- *os << "CORBA::Any::to_string (_tao_retval, ";
+ *os << "CORBA::Any::to_string (_tao_retval.inout (), ";
}
else
{
- *os << "CORBA::Any::to_wstring (_tao_retval, ";
+ *os << "CORBA::Any::to_wstring (_tao_retval.inout (), ";
}
*os << node->max_size ()->ev ()->u.ulval - 1 << ")";
@@ -459,7 +448,7 @@ int be_visitor_operation_rettype_compiled_marshal::visit_structure (be_structure
else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
{
if (node->size_type () == be_decl::VARIABLE)
- *os << "*_tao_retval";
+ *os << "_tao_retval.inout ()";
else
*os << "_tao_retval";
}
@@ -488,7 +477,7 @@ int be_visitor_operation_rettype_compiled_marshal::visit_union (be_union *node)
else if (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_INPUT)
{
if (node->size_type () == be_decl::VARIABLE)
- *os << "*_tao_retval";
+ *os << "_tao_retval.inout ()";
else
*os << "_tao_retval";
}
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/operation_ami_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/operation_ami_cs.cpp
index f55999f91f5..0af00e2bf7c 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/operation_ami_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/operation_ami_cs.cpp
@@ -629,8 +629,8 @@ be_compiled_visitor_operation_ami_cs::gen_pre_stub_info (be_operation *node,
int
be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation
- *node,
- be_type *bt)
+ *node,
+ be_type *bt)
{
TAO_OutStream *os = this->ctx_->stream ();
be_visitor *visitor;
@@ -756,8 +756,6 @@ be_compiled_visitor_operation_ami_cs::gen_marshal_and_invoke (be_operation
*os << be_nl
<< "if (_invoke_status == TAO_INVOKE_RESTART)" << be_idt_nl
<< "continue;" << be_uidt_nl
- << "// if (_invoke_status == TAO_INVOKE_EXCEPTION)" << be_idt_nl
- << "// cannot happen" << be_uidt_nl
<< "if (_invoke_status != TAO_INVOKE_OK)" << be_nl
<< "{" << be_idt_nl;
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 3e76c129671..fa48bbe3b6e 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/operation_cs.cpp
@@ -236,21 +236,15 @@ be_visitor_operation_cs::visit_operation (be_operation *node)
{
// now generate the normal successful return statement
os->indent ();
- *os << "return ";
- // return the appropriate return value
- ctx = *this->ctx_;
- ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS);
- visitor = tao_cg->make_visitor (&ctx);
- if (!visitor || (bt->accept (visitor) == -1))
+ if (bt->size_type () == be_decl::VARIABLE
+ || bt->base_node_type () == AST_Decl::NT_array)
{
- delete visitor;
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_operation_cs::"
- "visit_operation - "
- "codegen for return var failed\n"),
- -1);
+ *os << "return _tao_retval._retn ();";
+ }
+ else
+ {
+ *os << "return _tao_retval;";
}
- *os << ";";
}
} // end of if (!native)
@@ -303,8 +297,6 @@ be_visitor_operation_cs::gen_raise_exception (be_type *bt,
const char *completion_status)
{
TAO_OutStream *os = this->ctx_->stream ();
- be_visitor *visitor;
- be_visitor_context ctx;
if (this->void_return_type (bt))
{
@@ -313,23 +305,17 @@ be_visitor_operation_cs::gen_raise_exception (be_type *bt,
}
else
{
- *os << "ACE_THROW_RETURN ("
- << excep << " (" << completion_status << "), ";
-
- // return the appropriate return value
- ctx = *this->ctx_;
- ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS);
- visitor = tao_cg->make_visitor (&ctx);
- if (!visitor || (bt->accept (visitor) == -1))
+ if (bt->size_type () == be_decl::VARIABLE
+ || bt->base_node_type () == AST_Decl::NT_array)
{
- delete visitor;
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_operation_cs::"
- "gen_raise_exception - "
- "codegen for return var failed\n"),
- -1);
+ *os << "ACE_THROW_RETURN (" << excep
+ << " (" << completion_status << "), 0);\n";
+ }
+ else
+ {
+ *os << "ACE_THROW_RETURN (" << excep
+ << " (" << completion_status << "), _tao_retval);\n";
}
- *os << ");\n";
}
return 0;
}
@@ -338,8 +324,6 @@ int
be_visitor_operation_cs::gen_check_exception (be_type *bt)
{
TAO_OutStream *os = this->ctx_->stream ();
- be_visitor *visitor;
- be_visitor_context ctx;
os->indent ();
// check if there is an exception
@@ -350,23 +334,15 @@ be_visitor_operation_cs::gen_check_exception (be_type *bt)
}
else
{
- *os << "ACE_CHECK_RETURN (";
- // << "_tao_environment, ";
-
- // return the appropriate return value
- ctx = *this->ctx_;
- ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_RETURN_CS);
- visitor = tao_cg->make_visitor (&ctx);
- if (!visitor || (bt->accept (visitor) == -1))
+ if (bt->size_type () == be_decl::VARIABLE
+ || bt->base_node_type () == AST_Decl::NT_array)
{
- delete visitor;
- ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_operation_cs::"
- "gen_check_exception - "
- "codegen failed\n"),
- -1);
+ *os << "ACE_CHECK_RETURN (0);\n";
+ }
+ else
+ {
+ *os << "ACE_CHECK_RETURN (_tao_retval);\n";
}
- *os << ");\n";
}
return 0;
@@ -796,8 +772,6 @@ be_compiled_visitor_operation_cs::gen_marshal_and_invoke (be_operation
*os << be_nl
<< "if (_invoke_status == TAO_INVOKE_RESTART)" << be_idt_nl
<< "continue;" << be_uidt_nl
- << "// if (_invoke_status == TAO_INVOKE_EXCEPTION)" << be_idt_nl
- << "// cannot happen" << be_uidt_nl
<< "if (_invoke_status != TAO_INVOKE_OK)" << be_nl
<< "{" << be_idt_nl;
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/rettype_post_docall_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/rettype_post_docall_cs.cpp
index 9c43261e406..c9438c4c932 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/rettype_post_docall_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/rettype_post_docall_cs.cpp
@@ -102,7 +102,7 @@ be_visitor_operation_compiled_rettype_post_docall::visit_array (be_array *node)
*os << bt->name () << "_forany _tao_retval_forany ("
<< be_idt << be_idt_nl
- << "_tao_retval" << be_uidt_nl
+ << "_tao_retval.inout ()" << be_uidt_nl
<< ");\n" << be_uidt;
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/rettype_pre_docall_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/rettype_pre_docall_cs.cpp
index f6f656853e4..8d862d26487 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/rettype_pre_docall_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/rettype_pre_docall_cs.cpp
@@ -58,8 +58,9 @@ be_visitor_operation_rettype_pre_docall_cs::visit_array (be_array *node)
bt = node;
os->indent ();
- *os << "ACE_ALLOCATOR_RETURN (_tao_retval, " << bt->name ()
- << "_alloc (), _tao_retval);\n";
+ *os << "ACE_ALLOCATOR_RETURN (_tao_bare_ptr, " << bt->name ()
+ << "_alloc (), 0);" << be_nl;
+ *os << bt->name () << "_var _tao_retval (_tao_bare_ptr);\n";
return 0;
}
@@ -93,7 +94,8 @@ visit_predefined_type (be_predefined_type *node)
{
case AST_PredefinedType::PT_any:
os->indent ();
- *os << "ACE_NEW_RETURN (_tao_retval, CORBA::Any, _tao_retval);\n";
+ *os << "ACE_NEW_RETURN (_tao_bare_ptr, CORBA::Any, 0);" << be_nl
+ << "CORBA::Any_var _tao_retval (_tao_bare_ptr);\n";
break;
default:
break;
@@ -113,7 +115,8 @@ be_visitor_operation_rettype_pre_docall_cs::visit_sequence (be_sequence *node)
bt = node;
os->indent ();
- *os << "ACE_NEW_RETURN (_tao_retval, " << bt->name () << ", _tao_retval);\n";
+ *os << "ACE_NEW_RETURN (_tao_bare_ptr, " << bt->name () << ", 0);" << be_nl
+ << bt->name () << "_var _tao_retval (_tao_bare_ptr);\n";
return 0;
}
@@ -132,7 +135,8 @@ be_visitor_operation_rettype_pre_docall_cs::visit_structure (be_structure *node)
if (node->size_type () == be_type::VARIABLE)
{
os->indent ();
- *os << "ACE_NEW_RETURN (_tao_retval, " << bt->name () << ", _tao_retval);\n";
+ *os << "ACE_NEW_RETURN (_tao_bare_ptr, " << bt->name () << ", 0);" << be_nl
+ << bt->name () << "_var _tao_retval (_tao_bare_ptr);\n";
}
return 0;
}
@@ -168,7 +172,8 @@ be_visitor_operation_rettype_pre_docall_cs::visit_union (be_union *node)
if (node->size_type () == be_type::VARIABLE)
{
os->indent ();
- *os << "ACE_NEW_RETURN (_tao_retval, " << bt->name () << ", _tao_retval);\n";
+ *os << "ACE_NEW_RETURN (_tao_bare_ptr, " << bt->name () << ", 0);" << be_nl
+ << bt->name () << "_var _tao_retval (_tao_bare_ptr);\n";
}
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp b/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp
index 3c903ab8023..8cbc4d303f9 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/rettype_vardecl_cs.cpp
@@ -57,9 +57,9 @@ be_visitor_operation_rettype_vardecl_cs::visit_array (be_array *node)
os->indent ();
- *os << bt->name () << "_slice *_tao_retval = 0;";
+ *os << bt->name () << "_slice *_tao_bare_ptr = 0;";
- *os << be_nl << be_nl;
+ *os << be_nl;
return 0;
}
@@ -96,7 +96,7 @@ be_visitor_operation_rettype_vardecl_cs::visit_interface (be_interface *node)
bt = node;
os->indent ();
- *os << bt->name () << "_ptr _tao_retval = " << bt->name () << "::_nil ();";
+ *os << bt->name () << "_var _tao_retval;";
*os << be_nl << be_nl;
@@ -115,7 +115,7 @@ be_visitor_operation_rettype_vardecl_cs::visit_interface_fwd (be_interface_fwd *
bt = node;
os->indent ();
- *os << bt->name () << "_ptr _tao_retval = " << bt->name () << "::_nil ();";
+ *os << bt->name () << "_var _tao_retval;";
*os << be_nl << be_nl;
@@ -137,7 +137,7 @@ be_visitor_operation_rettype_vardecl_cs::visit_valuetype (be_valuetype *node)
os->indent ();
- *os << bt->name () << "* _tao_retval = 0;";
+ *os << bt->name () << " *_tao_bare_ptr = 0;";
*os << be_nl << be_nl;
@@ -156,7 +156,7 @@ be_visitor_operation_rettype_vardecl_cs::visit_valuetype_fwd (be_valuetype_fwd *
bt = node;
os->indent ();
- *os << bt->name () << "* _tao_retval = 0;";
+ *os << bt->name () << " *_tao_bare_ptr = 0;";
*os << be_nl << be_nl;
@@ -180,11 +180,11 @@ be_visitor_operation_rettype_vardecl_cs::visit_predefined_type (be_predefined_ty
{
case AST_PredefinedType::PT_pseudo:
os->indent ();
- *os << bt->name () << "_ptr _tao_retval = 0;";
+ *os << bt->name () << "_var _tao_retval;";
break;
case AST_PredefinedType::PT_any:
os->indent ();
- *os << bt->name () << "* _tao_retval = 0;";
+ *os << bt->name () << " *_tao_bare_ptr = 0;";
break;
case AST_PredefinedType::PT_void:
break;
@@ -213,7 +213,7 @@ be_visitor_operation_rettype_vardecl_cs::visit_sequence (be_sequence *node)
bt = node;
os->indent ();
- *os << bt->name () << "* _tao_retval = 0;";
+ *os << bt->name () << " *_tao_bare_ptr = 0;";
*os << be_nl << be_nl;
return 0;
@@ -228,11 +228,11 @@ be_visitor_operation_rettype_vardecl_cs::visit_string (be_string *node)
if (node->width () == sizeof (char))
{
- *os << "char* _tao_retval = 0;";
+ *os << "CORBA::String_var _tao_retval;";
}
else
{
- *os << "CORBA::WChar* _tao_retval = 0;";
+ *os << "CORBA::WString_var _tao_retval;";
}
*os << be_nl << be_nl;
@@ -256,7 +256,7 @@ be_visitor_operation_rettype_vardecl_cs::visit_structure (be_structure *node)
// aggregate type
if (node->size_type () == be_decl::VARIABLE)
{
- *os << bt->name () << "* _tao_retval = 0;" << be_nl;
+ *os << bt->name () << " *_tao_bare_ptr = 0;" << be_nl;
}
else
{
@@ -301,7 +301,7 @@ be_visitor_operation_rettype_vardecl_cs::visit_union (be_union *node)
// aggregate type
if (node->size_type () == be_decl::VARIABLE)
{
- *os << bt->name () << "* _tao_retval = 0;";
+ *os << bt->name () << " *_tao_bare_ptr = 0;";
}
else
{
diff --git a/TAO/TAO_IDL/be/be_visitor_operation/thru_poa_collocated_ss.cpp b/TAO/TAO_IDL/be/be_visitor_operation/thru_poa_collocated_ss.cpp
index 78c7b56db5f..e72644a3a40 100644
--- a/TAO/TAO_IDL/be/be_visitor_operation/thru_poa_collocated_ss.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_operation/thru_poa_collocated_ss.cpp
@@ -111,7 +111,7 @@ int be_visitor_operation_thru_poa_collocated_ss::visit_operation (be_operation *
if (!visitor)
{
ACE_ERROR_RETURN ((LM_ERROR,
- "be_visitor_operation_cs::"
+ "be_visitor_operation_ss::"
"visit_operation - "
"Bad visitor to return type\n"),
-1);
@@ -121,7 +121,7 @@ int be_visitor_operation_thru_poa_collocated_ss::visit_operation (be_operation *
{
delete visitor;
ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_operation_cs::"
+ "(%N:%l) be_visitor_operation_ss::"
"visit_operation - "
"codegen for argument list failed\n"),
-1);
@@ -134,7 +134,7 @@ int be_visitor_operation_thru_poa_collocated_ss::visit_operation (be_operation *
{
// Declare a return type
ctx = *this->ctx_;
- ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_DECL_CS);
+ ctx.state (TAO_CodeGen::TAO_OPERATION_RETVAL_DECL_SS);
visitor = tao_cg->make_visitor (&ctx);
if (!visitor || (bt->accept (visitor) == -1))
{
@@ -157,7 +157,7 @@ int be_visitor_operation_thru_poa_collocated_ss::visit_operation (be_operation *
{
delete visitor;
ACE_ERROR_RETURN ((LM_ERROR,
- "(%N:%l) be_visitor_operation_thru_poa_collocated_cs::"
+ "(%N:%l) be_visitor_operation_thru_poa_collocated_ss::"
"gen_check_exception - "
"codegen failed\n"),
-1);