diff options
author | gokhale <gokhale@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-04-23 21:18:52 +0000 |
---|---|---|
committer | gokhale <gokhale@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1998-04-23 21:18:52 +0000 |
commit | 99df1ccdfae63a27750f2af89b98001458d72f51 (patch) | |
tree | 705167126a9f07fc34d50ee0ce41dee68800ff8e /TAO/TAO_IDL/be/be_visitor_exception.cpp | |
parent | 339eb098d8706482a57eaa01b41b8c66d1226ec5 (diff) | |
download | ATCD-99df1ccdfae63a27750f2af89b98001458d72f51.tar.gz |
*** empty log message ***
Diffstat (limited to 'TAO/TAO_IDL/be/be_visitor_exception.cpp')
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_exception.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/TAO/TAO_IDL/be/be_visitor_exception.cpp b/TAO/TAO_IDL/be/be_visitor_exception.cpp index 028ab2fd0a9..4e635804a32 100644 --- a/TAO/TAO_IDL/be/be_visitor_exception.cpp +++ b/TAO/TAO_IDL/be/be_visitor_exception.cpp @@ -434,6 +434,8 @@ int be_visitor_exception_cs::visit_exception (be_exception *node) << "CORBA::Environment _tao_env;" << be_nl << "if (!_tao_any.type ()->equal (" << node->tc_name () << ", _tao_env)) return 0; // not equal" << be_nl + << "if (_tao_any.any_owns_data ())" << be_nl + << "{" << be_idt_nl << "ACE_NEW_RETURN (_tao_elem, " << node->name () << ", 0);" << be_nl << "TAO_InputCDR stream ((ACE_Message_Block *)_tao_any.value ());" @@ -447,8 +449,18 @@ int be_visitor_exception_cs::visit_exception (be_exception *node) << be_nl << " return 1;" << be_uidt_nl << "}" << be_nl - << "else" << be_nl - << " return 0;" << be_uidt_nl + << "else" << be_nl // decode failed + << "{" << be_idt_nl + << "delete _tao_elem;" << be_nl + << "return 0;" << be_uidt_nl + << "}" << be_uidt_nl + << "}" << be_nl + << "else" << be_nl // else any does not own the data + << "{" << be_idt_nl + << "_tao_elem = (" << node->name () << " *)_tao_any.value ();" + << be_nl + << "return 1;" << be_uidt_nl + << "}" << be_uidt_nl << "}\n\n"; os->indent (); |