diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-03-25 00:19:56 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-03-25 00:19:56 +0000 |
commit | 523c9f504ba65154204c0e18035590ada351b23b (patch) | |
tree | f5750295ac06d7cf1d650580d5888b1380b9e044 | |
parent | 32bcf5e90c05abce08f4de905b33a57b8f1e3374 (diff) | |
download | ATCD-523c9f504ba65154204c0e18035590ada351b23b.tar.gz |
ChangeLogTag: Mon Mar 24 18:15:51 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog | 12 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp | 9 | ||||
-rw-r--r-- | TAO/tao/PortableServer/PortableServerC.cpp | 20 |
3 files changed, 39 insertions, 2 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 2220a931832..eaa01e00ce6 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,15 @@ +Mon Mar 24 18:15:51 2003 Jeff Parsons <j.parsons@vanderbilt.edu> + + * TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp: + * tao/PortableServer/PortableServerC.cpp: + + Fixed code for generating CDR operator for a typedef'd + sequence whose element is itself a typedef'd sequence. + The IDL compiler source code that handles this case was + inadvertently removed in an earlier checkin. Also fixed + the CDR operator in PortableServer where the problem + was noticed. + Mon Mar 24 17:36:44 2003 Jeff Parsons <j.parsons@vanderbilt.edu> * TAO_IDL/be/be_visitor_interface/any_op_cs.cpp: diff --git a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp index d560e6484f7..03740875566 100644 --- a/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp +++ b/TAO/TAO_IDL/be/be_visitor_sequence/cdr_op_cs.cpp @@ -42,6 +42,15 @@ be_visitor_sequence_cdr_op_cs::~be_visitor_sequence_cdr_op_cs (void) int be_visitor_sequence_cdr_op_cs::visit_sequence (be_sequence *node) { + if (this->ctx_->alias ()) + { + // We are here because the base type of the sequence node is + // itself a typedef'd sequence i.e., this is nested call resulting + // from bt->accept(0 below. For the case of sequence of + // anonymous sequence, see comment below. + return this->visit_node (node); + } + if (node->cli_stub_cdr_op_gen () || node->imported () || node->is_local ()) diff --git a/TAO/tao/PortableServer/PortableServerC.cpp b/TAO/tao/PortableServer/PortableServerC.cpp index 0699c0cab2b..dde8679253a 100644 --- a/TAO/tao/PortableServer/PortableServerC.cpp +++ b/TAO/tao/PortableServer/PortableServerC.cpp @@ -10298,7 +10298,15 @@ CORBA::Boolean operator<< ( if (strm << _tao_seq_len) { // Encode all elements. - } + CORBA::Boolean _tao_marshal_flag = 1; + + for (CORBA::ULong i = 0; i < _tao_seq_len && _tao_marshal_flag; ++i) + { + _tao_marshal_flag = (strm << _tao_sequence[i]); + } + + return _tao_marshal_flag; + } return 0; } @@ -10329,7 +10337,15 @@ CORBA::Boolean operator<< ( return 1; } - // Retrieve all the elements. + // Retrieve all the elements. + CORBA::Boolean _tao_marshal_flag = 1; + + for (CORBA::ULong i = 0; i < _tao_seq_len && _tao_marshal_flag; ++i) + { + _tao_marshal_flag = (strm >> _tao_sequence[i]); + } + + return _tao_marshal_flag; } return 0; |