diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2006-07-19 17:11:00 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2006-07-19 17:11:00 +0000 |
commit | def8b0183d1ccb0b1a0c32cd0f88b01c389f2676 (patch) | |
tree | 0e3616b86f391f51ded6abb9e10f715bc4e1ab25 | |
parent | 5388a8f3fff0cb050b674aeba3eb22e32eddabe9 (diff) | |
download | ATCD-def8b0183d1ccb0b1a0c32cd0f88b01c389f2676.tar.gz |
ChangeLogTag: Wed Jul 19 17:07:12 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog | 9 | ||||
-rw-r--r-- | TAO/TAO_IDL/be/be_visitor_arg_traits.cpp | 23 |
2 files changed, 25 insertions, 7 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index ec9d076fa78..4ab90ef4356 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,12 @@ +Wed Jul 19 17:07:12 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu> + + * TAO_IDL/be/be_visitor_arg_traits.cpp: + + Fixed bug in the logic of the decisioin whether or not to generate + the arg traits template specialization for a typedef. This fix + addresses the reopening of [BUGID:2582], which will now be set + to FIXED unless and until another bug is found. + Wed Jul 19 17:21:38 UTC 2006 Ossama Othman <ossama_othman at symantec dot com> * orbsvcs/tests/AVStreams/Asynch_Three_Stage/Connection_Manager.cpp diff --git a/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp b/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp index 64ff94073c9..36f7a3cb20c 100644 --- a/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp +++ b/TAO/TAO_IDL/be/be_visitor_arg_traits.cpp @@ -1063,11 +1063,20 @@ be_visitor_arg_traits::visit_typedef (be_typedef *node) // We can't set seen_in_operation_ for the base type // in the be_typedef operation, since valuetype OBV - // constructor code may pass in FALSE, and the base + // constructor code may reset it to FALSE, and the base // type may be used unaliased in another arg somewhere. // So we just set it to TRUE here, since we know it - // has to be TRUE at this point. - bt->seen_in_operation (true); + // has to be TRUE at this point. We also set the + // 'generated' flag to false if the original value + // of 'seen_in_operation' was false, since the base + // type could have been processed already, as a member + // for example, before the typedef was seen, which + // would short-circuit things. + if (!bt->seen_in_operation ()) + { + bt->seen_in_operation (true); + this->generated (bt, false); + } if (!bt || (bt->accept (this) == -1)) { @@ -1104,24 +1113,24 @@ be_visitor_arg_traits::generated (be_decl *node) const void be_visitor_arg_traits::generated (be_decl *node, - bool ) + bool val) { if (ACE_OS::strcmp (this->S_, "") == 0) { switch (this->ctx_->state ()) { case TAO_CodeGen::TAO_ROOT_CS: - node->cli_arg_traits_gen (true); + node->cli_arg_traits_gen (val); return; case TAO_CodeGen::TAO_ROOT_SS: - node->srv_arg_traits_gen (true); + node->srv_arg_traits_gen (val); return; default: return; } } - node->srv_sarg_traits_gen (true); + node->srv_sarg_traits_gen (val); } int |