summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstanleyk <stanleyk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2013-03-01 17:01:24 +0000
committerstanleyk <stanleyk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2013-03-01 17:01:24 +0000
commite8ef642d766fb3d6abd50c2ed96e576e299e29b2 (patch)
tree3c52c87107e17ba2b773f129411ccbc6c1dc9d65
parentfacae1485a04675312b05837b5a5f83b693adc21 (diff)
downloadATCD-e8ef642d766fb3d6abd50c2ed96e576e299e29b2.tar.gz
Fix memory leaks related to not cleaning up returned object group from add_member and remove_member operations.
-rw-r--r--TAO/ChangeLog13
-rw-r--r--TAO/orbsvcs/orbsvcs/Naming/FaultTolerant/nsgroup_svc.cpp12
-rw-r--r--TAO/orbsvcs/tests/FT_Naming/FaultTolerant/Basic.cpp5
-rw-r--r--TAO/orbsvcs/tests/FT_Naming/FaultTolerant/LB_server.cpp18
-rw-r--r--TAO/orbsvcs/tests/FT_Naming/FaultTolerant/client.cpp7
-rw-r--r--TAO/orbsvcs/tests/FT_Naming/Load_Balancing/Basic.cpp5
-rw-r--r--TAO/orbsvcs/tests/FT_Naming/Load_Balancing/LB_server.cpp7
7 files changed, 43 insertions, 24 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index 4301902fa03..94ecba61ba9 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -1,3 +1,16 @@
+Fri Mar 1 16:54:37 UTC 2013 Kevin Stanley <stanleyk@ociweb.com>
+
+ * orbsvcs/orbsvcs/Naming/FaultTolerant/nsgroup_svc.cpp:
+ * orbsvcs/tests/FT_Naming/FaultTolerant/Basic.cpp:
+ * orbsvcs/tests/FT_Naming/FaultTolerant/LB_server.cpp:
+ * orbsvcs/tests/FT_Naming/FaultTolerant/client.cpp:
+ * orbsvcs/tests/FT_Naming/Load_Balancing/Basic.cpp:
+ * orbsvcs/tests/FT_Naming/Load_Balancing/LB_server.cpp:
+
+ Avoid memory leaks by placing object group reference
+ returned from add_member and remove_member in an
+ ObjectGroup_var to ensure it is cleaned up.
+
Fri Mar 1 15:30:10 UTC 2013 Kevin Stanley <stanleyk@ociweb.com>
* orbsvcs/ImplRepo_Service/Shared_Backing_Store.cpp:
diff --git a/TAO/orbsvcs/orbsvcs/Naming/FaultTolerant/nsgroup_svc.cpp b/TAO/orbsvcs/orbsvcs/Naming/FaultTolerant/nsgroup_svc.cpp
index 2d933ac6541..bfbc7cfc7e1 100644
--- a/TAO/orbsvcs/orbsvcs/Naming/FaultTolerant/nsgroup_svc.cpp
+++ b/TAO/orbsvcs/orbsvcs/Naming/FaultTolerant/nsgroup_svc.cpp
@@ -519,10 +519,9 @@ NS_group_svc::member_add (
-1);
}
- this->naming_manager_->add_member (
- group_var.in(),
- location_name,
- ior_var.in());
+ group_var = this->naming_manager_->add_member (group_var.in(),
+ location_name,
+ ior_var.in());
}
catch (const PortableGroup::ObjectGroupNotFound&)
@@ -638,9 +637,8 @@ NS_group_svc::member_remove (
this->naming_manager_->get_object_group_ref_from_name (
ACE_TEXT_ALWAYS_CHAR (group_name));
- this->naming_manager_->remove_member (
- group_var.in(),
- location_name);
+ group_var = this->naming_manager_->remove_member (group_var.in(),
+ location_name);
}
catch (const PortableGroup::ObjectGroupNotFound&)
{
diff --git a/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/Basic.cpp b/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/Basic.cpp
index 6b524f0d8e9..893a8bce90a 100644
--- a/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/Basic.cpp
+++ b/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/Basic.cpp
@@ -28,8 +28,9 @@ Basic::remove_member (void)
PortableGroup::Location location (1);
location.length (1);
location[0].id = CORBA::string_dup (this->location_.in ());
- this->nm_->remove_member (this->object_group_.in (),
- location);
+ this->object_group_ =
+ this->nm_->remove_member (this->object_group_.in (),
+ location);
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) - Removed Member at Location <%s>\n"),
diff --git a/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/LB_server.cpp b/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/LB_server.cpp
index 55d5aa89a67..807ecc8a46b 100644
--- a/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/LB_server.cpp
+++ b/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/LB_server.cpp
@@ -20,8 +20,7 @@ LB_server::destroy (void)
{
this->naming_manager_->delete_object_group ("BasicGroup");
- //TODO: Does the FT_NamingManager need a destroy method?
-// this->naming_manager_->destroy (1, 1);
+ this->root_poa_->destroy (1, 1);
this->orb_->destroy ();
}
@@ -189,7 +188,8 @@ LB_server::create_object_group (const char *group_name)
}
catch (const PortableGroup::ObjectNotCreated&)
{
- this->object_group_ = this->naming_manager_->get_object_group_ref_from_name (group_name);
+ this->object_group_ =
+ this->naming_manager_->get_object_group_ref_from_name (group_name);
ACE_DEBUG ((LM_DEBUG,
"(%P|%t) LB_server - object group already exists\n"));
return 1;
@@ -226,9 +226,10 @@ LB_server::register_servant (Basic *servant, const char *loc)
location[0].id = CORBA::string_dup (loc);
- this->naming_manager_->add_member (this->object_group_.in (),
- location,
- basic.in ());
+ this->object_group_ =
+ this->naming_manager_->add_member (this->object_group_.in (),
+ location,
+ basic.in ());
}
catch (const PortableGroup::ObjectNotAdded& )
{
@@ -254,8 +255,9 @@ LB_server::remove_servant (const char *loc)
location[0].id = CORBA::string_dup (loc);
try {
- this->naming_manager_->remove_member (this->object_group_.in (),
- location);
+ this->object_group_ =
+ this->naming_manager_->remove_member (this->object_group_.in (),
+ location);
}
catch (const CORBA::Exception& ex)
{
diff --git a/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/client.cpp b/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/client.cpp
index bc36cc4a15d..8e06362d6f6 100644
--- a/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/client.cpp
+++ b/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/client.cpp
@@ -1519,7 +1519,9 @@ do_persistence_objectgroup_test (
loc[0].id.in()),
RC_ERROR);
}
- naming_manager_1->remove_member (group_var.in(), location_name);
+ group_var =
+ naming_manager_1->remove_member (group_var.in(),
+ location_name);
// Save data for the removed member
CORBA::String_var member_str = theOrb->object_to_string(basic.in ());
@@ -1566,7 +1568,8 @@ do_persistence_objectgroup_test (
(ACE_TEXT_ALWAYS_CHAR (basic_group_name));
// Add back member
- naming_manager_1->add_member (group_var, location_name, member);
+ group_var =
+ naming_manager_1->add_member (group_var, location_name, member);
PortableGroup::Locations_var locations =
naming_manager_1->locations_of_members (group_var);
diff --git a/TAO/orbsvcs/tests/FT_Naming/Load_Balancing/Basic.cpp b/TAO/orbsvcs/tests/FT_Naming/Load_Balancing/Basic.cpp
index a04fcb81d93..3c11da34eb6 100644
--- a/TAO/orbsvcs/tests/FT_Naming/Load_Balancing/Basic.cpp
+++ b/TAO/orbsvcs/tests/FT_Naming/Load_Balancing/Basic.cpp
@@ -29,8 +29,9 @@ Basic::remove_member (void)
PortableGroup::Location location (1);
location.length (1);
location[0].id = CORBA::string_dup (this->location_.in ());
- this->nm_->remove_member (this->object_group_.in (),
- location);
+ this->object_group_ =
+ this->nm_->remove_member (this->object_group_.in (),
+ location);
ACE_DEBUG ((LM_DEBUG, "(%P|%t) - Removed Member at Location <%C>\n",
this->location_.in ()));
diff --git a/TAO/orbsvcs/tests/FT_Naming/Load_Balancing/LB_server.cpp b/TAO/orbsvcs/tests/FT_Naming/Load_Balancing/LB_server.cpp
index abf1333ad21..2ec9b232cd7 100644
--- a/TAO/orbsvcs/tests/FT_Naming/Load_Balancing/LB_server.cpp
+++ b/TAO/orbsvcs/tests/FT_Naming/Load_Balancing/LB_server.cpp
@@ -204,9 +204,10 @@ LB_server::register_servant (Basic *servant, const char *loc)
location[0].id = CORBA::string_dup (loc);
- this->naming_manager_->add_member (this->object_group_.in (),
- location,
- basic.in ());
+ this->object_group_ =
+ this->naming_manager_->add_member (this->object_group_.in (),
+ location,
+ basic.in ());
}
catch (const CORBA::Exception& ex)
{