From 5e2d008b641106dc3791fb508a84c87a2592045b Mon Sep 17 00:00:00 2001 From: Simon McQueen Date: Thu, 16 Jun 2005 15:55:19 +0000 Subject: ChangeLog: Thu Jun 16 16:47:42 2005 Simon McQueen --- TAO/ChangeLog | 7 +++++++ TAO/orbsvcs/IFR_Service/be_produce.cpp | 29 ++++++++++++++++------------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 2046576d72c..4d5bc4851f1 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,10 @@ +Thu Jun 16 16:47:42 2005 Simon McQueen + + * orbsvcs/IFR_Service/be_produce.cpp: + + Check repository ptr is not null before use in BE_cleanup. + This fixes bug #2154. + Thu Jun 16 07:45:12 UTC 2005 Johnny Willemsen * tao/PI/ORBInitializer_Registry_Impl.{h,cpp}: diff --git a/TAO/orbsvcs/IFR_Service/be_produce.cpp b/TAO/orbsvcs/IFR_Service/be_produce.cpp index 20661a2d020..302c6ca84b6 100644 --- a/TAO/orbsvcs/IFR_Service/be_produce.cpp +++ b/TAO/orbsvcs/IFR_Service/be_produce.cpp @@ -90,20 +90,23 @@ BE_cleanup (void) ACE_DECLARE_NEW_CORBA_ENV; ACE_TRY { - 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 ())) + if (be_global->repository ()) { - CORBA::ModuleDef_var scope = - CORBA::ModuleDef::_narrow (result.in () - ACE_ENV_ARG_PARAMETER); + CORBA::Contained_var result = + be_global->repository ()->lookup_id (be_global->holding_scope_name () + ACE_ENV_ARG_PARAMETER); ACE_TRY_CHECK; - scope->destroy (ACE_ENV_SINGLE_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 @@ -176,7 +179,7 @@ BE_ifr_repo_init (ACE_ENV_SINGLE_ARG_DECL) ); } - CORBA::Repository_var repo = + CORBA::Repository_var repo = CORBA::Repository::_narrow (object.in () ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (-1); @@ -205,7 +208,7 @@ BE_produce (void) { int status = BE_ifr_repo_init (ACE_ENV_SINGLE_ARG_PARAMETER); ACE_TRY_CHECK; - + if (status != 0) { return; -- cgit v1.2.1