summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormcorino <mcorino@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-10-22 11:39:41 +0000
committermcorino <mcorino@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-10-22 11:39:41 +0000
commit4f54804ca64150b6253a1396a164d89033cecf1f (patch)
tree1a7de0150f1e527a24a8d745fc9e2302e05c32be
parent2ce5cfe2b8d701eb2fc217cc178d890f7deaabd6 (diff)
downloadATCD-4f54804ca64150b6253a1396a164d89033cecf1f.tar.gz
Fri Oct 22 11:32:10 UTC 2010 Martin Corino <corino_m@remedy.nl>
* TAO_IDL/be/be_visitor_typecode/struct_typecode.cpp: * TAO_IDL/be/be_visitor_typecode/union_typecode.cpp: * TAO_IDL/be/be_visitor_typecode/value_typecode.cpp: Some changes to fix behaviour when encountering nested recursive type.
-rw-r--r--TAO/ChangeLog8
-rw-r--r--TAO/TAO_IDL/be/be_visitor_typecode/struct_typecode.cpp7
-rw-r--r--TAO/TAO_IDL/be/be_visitor_typecode/union_typecode.cpp7
-rw-r--r--TAO/TAO_IDL/be/be_visitor_typecode/value_typecode.cpp7
4 files changed, 23 insertions, 6 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 9cdc209d3d6..46f28d3a5b8 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,11 @@
+Fri Oct 22 11:32:10 UTC 2010 Martin Corino <corino_m@remedy.nl>
+
+ * TAO_IDL/be/be_visitor_typecode/struct_typecode.cpp:
+ * TAO_IDL/be/be_visitor_typecode/union_typecode.cpp:
+ * TAO_IDL/be/be_visitor_typecode/value_typecode.cpp:
+ Some changes to fix behaviour when encountering nested
+ recursive type.
+
Fri Oct 22 07:50:54 UTC 2010 Marcel Smit <msmit@remedy.nl>
* TAO_IDL/be/be_visitor_component/executor_exh.cpp:
diff --git a/TAO/TAO_IDL/be/be_visitor_typecode/struct_typecode.cpp b/TAO/TAO_IDL/be/be_visitor_typecode/struct_typecode.cpp
index f3d62577312..ff4a1ddd970 100644
--- a/TAO/TAO_IDL/be/be_visitor_typecode/struct_typecode.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_typecode/struct_typecode.cpp
@@ -33,8 +33,8 @@ TAO::be_visitor_struct_typecode::visit_structure (be_structure * node)
this->queue_lookup (this->tc_queue_, node);
ACE_Unbounded_Queue<AST_Type *> recursion_queue;
- this->is_recursive_ = node->in_recursion (recursion_queue);
- if (qnode && this->is_recursive_)
+ bool in_recursion = node->in_recursion (recursion_queue);
+ if (qnode && in_recursion)
{
// we're repeated and we're recursive so just leave
return 0;
@@ -53,6 +53,9 @@ TAO::be_visitor_struct_typecode::visit_structure (be_structure * node)
return 0;
}
+ // as this was no nested visit mark this typecode as recursive
+ this->is_recursive_ = in_recursion;
+
static bool const is_exception = false;
return this->visit (node, is_exception);
}
diff --git a/TAO/TAO_IDL/be/be_visitor_typecode/union_typecode.cpp b/TAO/TAO_IDL/be/be_visitor_typecode/union_typecode.cpp
index 639031801ee..388c40f0e27 100644
--- a/TAO/TAO_IDL/be/be_visitor_typecode/union_typecode.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_typecode/union_typecode.cpp
@@ -34,8 +34,8 @@ TAO::be_visitor_union_typecode::visit_union (be_union * node)
this->queue_lookup (this->tc_queue_, node);
ACE_Unbounded_Queue<AST_Type *> recursion_queue;
- this->is_recursive_ = node->in_recursion (recursion_queue);
- if (qnode && this->is_recursive_)
+ bool in_recursion = node->in_recursion (recursion_queue);
+ if (qnode && in_recursion)
{
// we're repeated and we're recursive so just leave
return 0;
@@ -54,6 +54,9 @@ TAO::be_visitor_union_typecode::visit_union (be_union * node)
return 0;
}
+ // as this was no nested visit mark this typecode as recursive
+ this->is_recursive_ = in_recursion;
+
this->is_nested_ = true;
TAO_OutStream & os = *this->ctx_->stream ();
diff --git a/TAO/TAO_IDL/be/be_visitor_typecode/value_typecode.cpp b/TAO/TAO_IDL/be/be_visitor_typecode/value_typecode.cpp
index 8c62547813c..ace5a6a1ba6 100644
--- a/TAO/TAO_IDL/be/be_visitor_typecode/value_typecode.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_typecode/value_typecode.cpp
@@ -33,8 +33,8 @@ TAO::be_visitor_value_typecode::visit_valuetype (be_valuetype * node)
this->queue_lookup (this->tc_queue_, node);
ACE_Unbounded_Queue<AST_Type *> recursion_queue;
- this->is_recursive_ = node->in_recursion (recursion_queue);
- if (qnode && this->is_recursive_)
+ bool in_recursion = node->in_recursion (recursion_queue);
+ if (qnode && in_recursion)
{
// we're repeated and we're recursive so just leave
return 0;
@@ -53,6 +53,9 @@ TAO::be_visitor_value_typecode::visit_valuetype (be_valuetype * node)
return 0;
}
+ // as this was no nested visit mark this typecode as recursive
+ this->is_recursive_ = in_recursion;
+
this->is_nested_ = true;
TAO_OutStream & os = *this->ctx_->stream ();