summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2006-06-16 20:32:33 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2006-06-16 20:32:33 +0000
commit997c4a4fdab5296b8affc900e5d1c215b86806ae (patch)
tree63185b06149cd7438ff25c61b3541e439e0bd1e1
parentf344329841bda3496bce08e7a0e28f81a2face73 (diff)
downloadATCD-997c4a4fdab5296b8affc900e5d1c215b86806ae.tar.gz
ChangeLogTag: Fri Jun 16 20:25:45 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog15
-rw-r--r--TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp3
-rw-r--r--TAO/orbsvcs/IFR_Service/ifr_adding_visitor_operation.cpp3
3 files changed, 19 insertions, 2 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 67b3ab857be..4b247f1a975 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,18 @@
+Fri Jun 16 20:25:45 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
+
+ * orbsvcs/IFR_Service/ifr_adding_visitor.cpp:
+ * orbsvcs/IFR_Service/ifr_adding_visitor_operation.cpp:
+
+ Added CORBA::string_dup() around the identifier string of
+ an argument, when it is inserted into the sequence of
+ parameter descriptions that is passed to the IFR to make
+ an entry for an operation or a factory. Since the
+ sequence in question manages its own memory, we were
+ getting double deletions of this identifier string before.
+ Thanks to Johnny Willemsen <jwillemsen@remedy.nl> for
+ pointing out the Interface Repository tests failures
+ causes by this problem.
+
Fri Jun 16 14:29:23 UTC 2006 Jeff Parsons <j.parsons@vanderbilt.edu>
* TAO_IDL/fe/fe_interface_header.cpp:
diff --git a/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp b/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp
index 6037b5f477f..31f082877d2 100644
--- a/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp
+++ b/TAO/orbsvcs/IFR_Service/ifr_adding_visitor.cpp
@@ -4021,7 +4021,8 @@ ifr_adding_visitor::fill_initializers (CORBA::ExtInitializerSeq &result,
for (CORBA::ULong i = 0; i < n_factories; ++i)
{
- result[i].name = factories[i]->local_name ()->get_string ();
+ result[i].name =
+ CORBA::string_dup (factories[i]->local_name ()->get_string ());
n_args = static_cast<CORBA::ULong> (factories[i]->argument_count ());
result[i].members.length (n_args);
diff --git a/TAO/orbsvcs/IFR_Service/ifr_adding_visitor_operation.cpp b/TAO/orbsvcs/IFR_Service/ifr_adding_visitor_operation.cpp
index 1a3972ea18c..63ff0eaefbf 100644
--- a/TAO/orbsvcs/IFR_Service/ifr_adding_visitor_operation.cpp
+++ b/TAO/orbsvcs/IFR_Service/ifr_adding_visitor_operation.cpp
@@ -228,7 +228,8 @@ int
ifr_adding_visitor_operation::visit_argument (AST_Argument *node)
{
// Get the parameter's name.
- this->params_[this->index_].name = node->local_name ()->get_string ();
+ this->params_[this->index_].name =
+ CORBA::string_dup (node->local_name ()->get_string ());
AST_Type *arg_type = node->field_type ();