summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-08-06 13:49:44 +0000
committerparsons <parsons@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2010-08-06 13:49:44 +0000
commit242f0f4ee37e0f1cff564172cb5ff40f1f239f32 (patch)
tree6f5b2de4390f25ee988bd3bb458d60cbf6a7710e
parenta13a49653e518a7635993687c010de6742cd6ebc (diff)
downloadATCD-242f0f4ee37e0f1cff564172cb5ff40f1f239f32.tar.gz
ChangeLogTag: Fri Aug 6 13:42:39 UTC 2010 Jeff Parsons <j.parsons@vanderbilt.edu>
-rw-r--r--TAO/ChangeLog10
-rw-r--r--TAO/orbsvcs/orbsvcs/IFRService/IFR_Service_Utils.cpp21
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,