summaryrefslogtreecommitdiff
path: root/TAO/utils
diff options
context:
space:
mode:
authorChris Cleeland <chris.cleeland@gmail.com>2004-08-25 22:05:41 +0000
committerChris Cleeland <chris.cleeland@gmail.com>2004-08-25 22:05:41 +0000
commit373979ae092e3dec6b42746bebaf528859518efb (patch)
tree8f8aba281bf4943e345c9ec0eed33ba0cf57d5c2 /TAO/utils
parentddb79f695deada35b78f65e9d2183b27f9ea88b4 (diff)
downloadATCD-373979ae092e3dec6b42746bebaf528859518efb.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.cpp10
-rw-r--r--TAO/utils/nslist/nsdel.cpp24
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