summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Mesnier <mesnier_p@ociweb.com>2006-04-26 12:05:30 +0000
committerPhil Mesnier <mesnier_p@ociweb.com>2006-04-26 12:05:30 +0000
commit54cf3cfe0fe64adc60c79c671db0b18dd6ea40ec (patch)
treeadcfc013ce08772e096004e32f63225ce7e9c413
parent87942935eb7a7abc2d2d4a60df14f123dc51d2b4 (diff)
downloadATCD-54cf3cfe0fe64adc60c79c671db0b18dd6ea40ec.tar.gz
ChangeLog tag: Wed Apr 26 11:21:57 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
-rw-r--r--TAO/ChangeLog7
-rw-r--r--TAO/tao/Valuetype/ValueBase.cpp43
2 files changed, 29 insertions, 21 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog
index bef1b638e8a..33e5b67c63e 100644
--- a/TAO/ChangeLog
+++ b/TAO/ChangeLog
@@ -12,6 +12,13 @@ Wed Apr 26 11:46:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
works now fine, the pluggable seems now to encounter another
bug.
+Wed Apr 26 11:21:57 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
+
+ * tao/Valuetype/ValueBase.cpp:
+
+ Fix for errant removal of throw, this corrects the OBV/Factory
+ test.
+
Wed Apr 26 10:41:12 UTC 2006 Johnny Willemsen <jwillemsen@remedy.nl>
* tao/Unbounded_Sequence_CDR_T.h:
diff --git a/TAO/tao/Valuetype/ValueBase.cpp b/TAO/tao/Valuetype/ValueBase.cpp
index 576f261f667..fbcd805a704 100644
--- a/TAO/tao/Valuetype/ValueBase.cpp
+++ b/TAO/tao/Valuetype/ValueBase.cpp
@@ -288,42 +288,43 @@ CORBA::ValueBase::_tao_unmarshal_pre (TAO_InputCDR &strm,
// factory for the valuetype in its truncatable derivation hierarchy
// is registered, the factory is used to create value for unmarshalling.
for (CORBA::ULong i = 0; i < num_ids; ++i)
- {
+ {
factory = orb_core->orb ()->lookup_value_factory (ids[i].c_str ());
if (factory != 0)
- {
+ {
if (i != 0 && chunking)
- {
+ {
require_truncation = true;
- }
- break;
- }
}
+ break;
+ }
+ }
- if (factory == 0) // %! except.!
- {
+ if (factory == 0)
+ {
if (TAO_debug_level > 0)
{
ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) OBV factory is null, id = %s\n"), repo_id));
- }
- return false;
+ ACE_TEXT ("TAO (%P|%t) OBV factory is null, id = %s\n"), repo_id));
}
- else
- {
- valuetype = factory->create_for_unmarshal ();
+ ACE_THROW_RETURN (CORBA::MARSHAL (CORBA::OMGVMCID | 1,
+ CORBA::COMPLETED_MAYBE),
+ false);
+ }
- if (require_truncation)
- valuetype->truncation_hook ();
- if (valuetype == 0)
- {
- return false; // %! except.?
- }
+ valuetype = factory->create_for_unmarshal ();
+
+ if (require_truncation)
+ valuetype->truncation_hook ();
- valuetype->chunking_ = chunking;
+ if (valuetype == 0)
+ {
+ return false; // %! except.?
}
+ valuetype->chunking_ = chunking;
+
return true;
}