diff options
author | stanleyk <stanleyk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2013-03-01 17:01:24 +0000 |
---|---|---|
committer | stanleyk <stanleyk@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2013-03-01 17:01:24 +0000 |
commit | a729b6b3f7c206e00a25063f398189e29a9b956b (patch) | |
tree | 3c52c87107e17ba2b773f129411ccbc6c1dc9d65 | |
parent | 90f829b7b1a01f1aa6a8e3485058fcb269f2fb76 (diff) | |
download | ATCD-a729b6b3f7c206e00a25063f398189e29a9b956b.tar.gz |
Fix memory leaks related to not cleaning up returned object group from add_member and remove_member operations.
-rw-r--r-- | TAO/ChangeLog | 13 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Naming/FaultTolerant/nsgroup_svc.cpp | 12 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/FT_Naming/FaultTolerant/Basic.cpp | 5 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/FT_Naming/FaultTolerant/LB_server.cpp | 18 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/FT_Naming/FaultTolerant/client.cpp | 7 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/FT_Naming/Load_Balancing/Basic.cpp | 5 | ||||
-rw-r--r-- | TAO/orbsvcs/tests/FT_Naming/Load_Balancing/LB_server.cpp | 7 |
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) { |