diff options
author | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2010-08-06 13:49:44 +0000 |
---|---|---|
committer | parsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2010-08-06 13:49:44 +0000 |
commit | 242f0f4ee37e0f1cff564172cb5ff40f1f239f32 (patch) | |
tree | 6f5b2de4390f25ee988bd3bb458d60cbf6a7710e | |
parent | a13a49653e518a7635993687c010de6742cd6ebc (diff) | |
download | ATCD-242f0f4ee37e0f1cff564172cb5ff40f1f239f32.tar.gz |
ChangeLogTag: Fri Aug 6 13:42:39 UTC 2010 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r-- | TAO/ChangeLog | 10 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp | 21 |
2 files changed, 26 insertions, 5 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 1cc0fed2e64..1366db0044f 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,13 @@ +Fri Aug 6 13:42:39 UTC 2010 Jeff Parsons <j.parsons@vanderbilt.edu> + + * orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp(valid_creation): + + Skipped call to pre_exist() check if the new entry represents + an IDL module, since modules may be reopened. This bug (reported + by Bogdan Jeram <bjeram at eso dot org>) was somehow + reintroduced since 1.7.8. This fix handles any reopened + module, and closes [BUGID:3881]. + Thu Aug 5 13:25:00 UTC 2010 Build CZar <buildczar at prismtech dot com> * tao/Valuetype/AbstractBase.h: diff --git a/TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp b/TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp index 4717307cea9..28accc13147 100644 --- a/TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp +++ b/TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp @@ -555,7 +555,9 @@ TAO_IFR_Service_Utils::valid_container ( if (error_flag == 1) { - throw CORBA::BAD_PARAM (CORBA::OMGVMCID | 4, CORBA::COMPLETED_NO); + throw + CORBA::BAD_PARAM (CORBA::OMGVMCID | 4, + CORBA::COMPLETED_NO); } } @@ -583,12 +585,15 @@ TAO_IFR_Service_Utils::id_exists (const char *id, { // The repo id must not already exist. ACE_TString holder; + if (repo->config ()->get_string_value (repo->repo_ids_key (), id, holder) == 0) { - throw CORBA::BAD_PARAM (CORBA::OMGVMCID | 2, CORBA::COMPLETED_NO); + throw + CORBA::BAD_PARAM (CORBA::OMGVMCID | 2, + CORBA::COMPLETED_NO); } } @@ -636,9 +641,9 @@ TAO_IFR_Service_Utils::name_exists ( if ((*checker) (member_name.fast_rep ()) != 0) { - throw CORBA::BAD_PARAM ( - CORBA::OMGVMCID | 3, - CORBA::COMPLETED_NO); + throw + CORBA::BAD_PARAM (CORBA::OMGVMCID | 3, + CORBA::COMPLETED_NO); } } } @@ -786,6 +791,12 @@ TAO_IFR_Service_Utils::valid_creation ( { TAO_IFR_Service_Utils::valid_container (container_kind, contained_kind); + + /// IDL modules can be reopened, and thus pre-exist. + if (contained_kind == CORBA::dk_Module) + { + return; + } TAO_IFR_Service_Utils::pre_exist (id, checker, |