diff options
author | cleeland <cleeland@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-08-25 22:05:41 +0000 |
---|---|---|
committer | cleeland <cleeland@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-08-25 22:05:41 +0000 |
commit | e9d802d962af0d04c73c180cff5ac5abd588c758 (patch) | |
tree | 8f8aba281bf4943e345c9ec0eed33ba0cf57d5c2 /TAO/utils | |
parent | 43f0d2332b4eb57cd7138d5ee3e8f5de75a70b08 (diff) | |
download | ATCD-e9d802d962af0d04c73c180cff5ac5abd588c758.tar.gz |
Wed Aug 25 16:03:29 2004 Chris Cleeland <cleeland_c@ociweb.com>
Integration of OCI Naming Service memory leak fixes.
Diffstat (limited to 'TAO/utils')
-rw-r--r-- | TAO/utils/nslist/nsadd.cpp | 10 | ||||
-rw-r--r-- | TAO/utils/nslist/nsdel.cpp | 24 |
2 files changed, 25 insertions, 9 deletions
diff --git a/TAO/utils/nslist/nsadd.cpp b/TAO/utils/nslist/nsadd.cpp index ba619da9b2a..a177230a856 100644 --- a/TAO/utils/nslist/nsadd.cpp +++ b/TAO/utils/nslist/nsadd.cpp @@ -96,11 +96,11 @@ main (int argc, char *argv[]) } CORBA::Object_var obj; - if(ior) - { - obj = orb->string_to_object (ior ACE_ENV_ARG_PARAMETER); - ACE_TRY_CHECK; - } + if (ior) + { + obj = orb->string_to_object (ior ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } CORBA::Object_var nc_obj = orb->resolve_initial_references ("NameService" ACE_ENV_ARG_PARAMETER); diff --git a/TAO/utils/nslist/nsdel.cpp b/TAO/utils/nslist/nsdel.cpp index 339273c7882..9905c6b40f7 100644 --- a/TAO/utils/nslist/nsdel.cpp +++ b/TAO/utils/nslist/nsdel.cpp @@ -26,12 +26,14 @@ CORBA::ORB_var orb; int showIOR = 0; int showNSonly = 0; +const char* USAGE = "Usage: %s [ --name <name> ] [--destroy]\n"; int main (int argc, char *argv[]) { ACE_DECLARE_NEW_CORBA_ENV; int i; + int destroy_after_unbind = 0; ACE_TRY { CORBA::ORB_var orb = @@ -55,10 +57,13 @@ main (int argc, char *argv[]) argv++; name = *argv; } + else if (ACE_OS::strcmp (*argv, "--destroy") == 0) + { + destroy_after_unbind = 1; + } else if (ACE_OS::strncmp(*argv, "--", 2) == 0) { - ACE_DEBUG ((LM_DEBUG, - "Usage: %s [ --name <name> ]\n", pname)); + ACE_DEBUG ((LM_DEBUG, USAGE, pname)); return 1; } argc--; @@ -67,8 +72,7 @@ main (int argc, char *argv[]) if (name == 0) { - ACE_DEBUG ((LM_DEBUG, - "Usage: %s [ --name <name> ]\n", pname)); + ACE_DEBUG ((LM_DEBUG, USAGE, pname)); return 1; } // make a copy @@ -135,7 +139,19 @@ main (int argc, char *argv[]) the_name[ntoks - 1].id = CORBA::string_dup (lastname); if (kind != 0) the_name[ntoks - 1].kind = CORBA::string_dup (kind); + + // This needs to be bounded by a try/catch + CORBA::Object_var the_context = root_nc->resolve (the_name ACE_ENV_ARG_PARAMETER); root_nc->unbind (the_name ACE_ENV_ARG_PARAMETER ); + + if (destroy_after_unbind) + { + CosNaming::NamingContext_var nc = + CosNaming::NamingContext::_narrow (the_context.in () ACE_ENV_ARG_PARAMETER); + if (! CORBA::is_nil(nc.in())) + nc->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); + } + ACE_TRY_CHECK; } ACE_CATCHANY |