summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2006-07-19 17:11:00 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2006-07-19 17:11:00 +0000
commitdef8b0183d1ccb0b1a0c32cd0f88b01c389f2676 (patch)
tree0e3616b86f391f51ded6abb9e10f715bc4e1ab25
parent5388a8f3fff0cb050b674aeba3eb22e32eddabe9 (diff)
downloadATCD-def8b0183d1ccb0b1a0c32cd0f88b01c389f2676.tar.gz
ChangeLogTag: Wed Jul 19 17:07:12 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog9
-rw-r--r--TAO/TAO_IDL/be/be_visitor_arg_traits.cpp23
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