diff options
Diffstat (limited to 'TAO/orbsvcs/IFR_Service/be_produce.cpp')
-rw-r--r-- | TAO/orbsvcs/IFR_Service/be_produce.cpp | 31 |
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 = |