summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-09-03 18:02:54 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2009-09-03 18:02:54 +0000
commitaa618ef0ab86b0bfa834cd5843d7ee2193e0eac5 (patch)
tree91eee988dd2fe9f23d89f314729427b8598655bf
parentd7511ccd7164912f9d09c54948800830cbb313f5 (diff)
downloadATCD-aa618ef0ab86b0bfa834cd5843d7ee2193e0eac5.tar.gz
ChangeLogTag: Thu Sep 3 18:01:14 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--modules/TAO/ChangeLog8
-rw-r--r--modules/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp10
2 files changed, 18 insertions, 0 deletions
diff --git a/modules/TAO/ChangeLog b/modules/TAO/ChangeLog
index e0dcb3f083d..fe2081b4e6a 100644
--- a/modules/TAO/ChangeLog
+++ b/modules/TAO/ChangeLog
@@ -1,3 +1,11 @@
+Thu Sep 3 18:01:14 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * orbsvcs/IFR_Service/ifr_adding_visitor.cpp:
+
+ Fixed bug in component attribute visitation that left the
+ visitor state incorrect for further processing of the
+ component's scope.
+
Thu Sep 3 16:28:17 UTC 2009 Jeff Parsons <j.parsons@vanderbilt.edu>
* orbsvcs/IFR_Service/ifr_adding_visitor.h:
diff --git a/modules/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp b/modules/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp
index 5ff00e33ddb..c0f07373932 100644
--- a/modules/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp
+++ b/modules/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp
@@ -1917,9 +1917,15 @@ ifr_adding_visitor::visit_field (AST_Field *node)
int
ifr_adding_visitor::visit_attribute (AST_Attribute *node)
{
+ ::CORBA::IDLType_var holder;
+
try
{
AST_Type *type = node->field_type ();
+
+ // Save to be replaced later.
+ holder =
+ ::CORBA::IDLType::_duplicate (this->ir_current_.in ());
// Updates ir_current_.
this->get_referenced_type (type);
@@ -1995,6 +2001,10 @@ ifr_adding_visitor::visit_attribute (AST_Attribute *node)
return -1;
}
+
+ // Restore entry of component or interface.
+ this->ir_current_ =
+ ::CORBA::IDLType::_duplicate (holder.in ());
return 0;
}