summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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,