summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/IFR_Service/be_produce.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/IFR_Service/be_produce.cpp')
-rw-r--r--TAO/orbsvcs/IFR_Service/be_produce.cpp31
1 files changed, 30 insertions, 1 deletions
diff --git a/TAO/orbsvcs/IFR_Service/be_produce.cpp b/TAO/orbsvcs/IFR_Service/be_produce.cpp
index a678f6729fb..302c6ca84b6 100644
--- a/TAO/orbsvcs/IFR_Service/be_produce.cpp
+++ b/TAO/orbsvcs/IFR_Service/be_produce.cpp
@@ -85,6 +85,36 @@ void
BE_cleanup (void)
{
idl_global->destroy ();
+
+ // Remove the holding scope entry from the repository.
+ ACE_DECLARE_NEW_CORBA_ENV;
+ ACE_TRY
+ {
+ if (be_global->repository ())
+ {
+ CORBA::Contained_var result =
+ be_global->repository ()->lookup_id (be_global->holding_scope_name ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ if (!CORBA::is_nil (result.in ()))
+ {
+ CORBA::ModuleDef_var scope =
+ CORBA::ModuleDef::_narrow (result.in ()
+ ACE_ENV_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+
+ scope->destroy (ACE_ENV_SINGLE_ARG_PARAMETER);
+ ACE_TRY_CHECK;
+ }
+ }
+ }
+ ACE_CATCHANY
+ {
+ ACE_PRINT_EXCEPTION (ACE_ANY_EXCEPTION,
+ ACE_TEXT ("BE_cleanup"));
+ }
+ ACE_ENDTRY;
}
// Abort this run of the BE.
@@ -110,7 +140,6 @@ BE_create_holding_scope (ACE_ENV_SINGLE_ARG_DECL)
ACE_ENV_ARG_PARAMETER);
ACE_CHECK;
- // Will live until the repository goes away for good.
if (CORBA::is_nil (result.in ()))
{
scope =