diff options
author | Phil Mesnier <mesnier_p@ociweb.com> | 2006-04-26 12:05:30 +0000 |
---|---|---|
committer | Phil Mesnier <mesnier_p@ociweb.com> | 2006-04-26 12:05:30 +0000 |
commit | 54cf3cfe0fe64adc60c79c671db0b18dd6ea40ec (patch) | |
tree | adcfc013ce08772e096004e32f63225ce7e9c413 | |
parent | 87942935eb7a7abc2d2d4a60df14f123dc51d2b4 (diff) | |
download | ATCD-54cf3cfe0fe64adc60c79c671db0b18dd6ea40ec.tar.gz |
ChangeLog tag: Wed Apr 26 11:21:57 UTC 2006 Phil Mesnier <mesnier_p@ociweb.com>
-rw-r--r-- | TAO/ChangeLog | 7 | ||||
-rw-r--r-- | TAO/tao/Valuetype/ValueBase.cpp | 43 |
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; } |