diff options
author | Simon McQueen <simon.mcqueen@gmail.com> | 2005-06-16 15:55:19 +0000 |
---|---|---|
committer | Simon McQueen <simon.mcqueen@gmail.com> | 2005-06-16 15:55:19 +0000 |
commit | 5e2d008b641106dc3791fb508a84c87a2592045b (patch) | |
tree | e4bed01caa79cba870a2f52ba070e113dd4fc5f2 | |
parent | b6a79b4d7176afff232d0059155de37b938b79cf (diff) | |
download | ATCD-5e2d008b641106dc3791fb508a84c87a2592045b.tar.gz |
ChangeLog: Thu Jun 16 16:47:42 2005 Simon McQueen <sm@prismtech.com>
-rw-r--r-- | TAO/ChangeLog | 7 | ||||
-rw-r--r-- | 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 <sm@prismtech.com> + + * 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 <jwillemsen@remedy.nl> * 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; |