diff options
author | mcorino <mcorino@users.noreply.github.com> | 2007-01-31 22:47:56 +0000 |
---|---|---|
committer | mcorino <mcorino@users.noreply.github.com> | 2007-01-31 22:47:56 +0000 |
commit | fd91b05d385c8ab197e0433fc0faf7498a043c4e (patch) | |
tree | 36b11f74a50d394b5b8e41c2d475a77077418a1e | |
parent | 8110441969cc430b1237a4027aeeecb30cba4801 (diff) | |
download | ATCD-fd91b05d385c8ab197e0433fc0faf7498a043c4e.tar.gz |
ChangeLogTag: Wed Jan 31 22:49:14 2007 Martin Corino <mcorino@remedy.nl>
-rw-r--r-- | TAO/ChangeLog | 11 | ||||
-rw-r--r-- | TAO/tao/DynamicAny/DynUnion_i.cpp | 4 |
2 files changed, 14 insertions, 1 deletions
diff --git a/TAO/ChangeLog b/TAO/ChangeLog index 17aa624cbd3..bdf0972d1fd 100644 --- a/TAO/ChangeLog +++ b/TAO/ChangeLog @@ -1,3 +1,14 @@ +Wed Jan 31 22:49:14 2007 Martin Corino <mcorino@remedy.nl> + + * tao/DynamicAny/DynUnion_i.cpp: + + Changed to handle inconsistency between statically declared (IDL + compiler) union typecodes and dynamically declared typecodes where + the discriminator type is an enum. + With statically declared typecodes the label values are stored as + actual enum values while with dynamically stored typecodes these + label values are stored as ULong. + Wed Jan 31 19:00:44 UTC 2007 Chad Elliott <elliott_c@ociweb.com> * tests/LongDouble: diff --git a/TAO/tao/DynamicAny/DynUnion_i.cpp b/TAO/tao/DynamicAny/DynUnion_i.cpp index 0ca2d0f5541..f5e48d77746 100644 --- a/TAO/tao/DynamicAny/DynUnion_i.cpp +++ b/TAO/tao/DynamicAny/DynUnion_i.cpp @@ -86,7 +86,9 @@ TAO_DynUnion_i::init (CORBA::TypeCode_ptr tc) // Initialize the discriminator to the label value of the first member. CORBA::TypeCode_var disc_tc = unaliased_tc->discriminator_type (); CORBA::TCKind disc_kind = TAO_DynAnyFactory::unalias (disc_tc.in ()); - if (disc_kind == CORBA::tk_enum) + CORBA::TCKind label_kind = TAO_DynAnyFactory::unalias (first_label->_tao_get_typecode ()); + if (disc_kind == CORBA::tk_enum && + label_kind == CORBA::tk_ulong) { // incase the discriminator is an enum type we have to walk // a slightly more complex path because enum labels are |